.TH gpac 1 2019 gpac GPAC
.
.SH NAME
.LP
gpac \- GPAC command-line filter session manager
.SH SYNOPSIS
.LP
.B gpac
.RI [options] FILTER [LINK] FILTER [...]
.br
.
.SH DESCRIPTION
.LP
This page describes all filters usually present in GPAC

To check for help on a filter not listed here, use gpac -h myfilter

.SH inspect
.LP
.br
Description: Inspect packets
.br

.br
The inspect filter can be used to dump pid and packets. It may also be used to check parts of payload of the packets. The default options inspect only pid changes.
.br
The packet inspector can be configured to dump specific properties of packets using .I fmt.
.br
When the option is not present, all properties are dumped. Otherwise, only properties identified by $TOKEN$ are printed. You may use '$', '@' or '%' for TOKEN separator. TOKEN can be:
.br
* pn: packet (frame in framed mode) number
.br
* dts: decoding time stamp in stream timescale, N/A if not available
.br
* ddts: difference between current and previous packets decoding time stamp in stream timescale, N/A if not available
.br
* cts: composition time stamp in stream timescale, N/A if not available
.br
* dcts: difference between current and previous packets composition time stamp in stream timescale, N/A if not available
.br
* ctso: difference between composition time stamp and decoding time stamp in stream timescale, N/A if not available
.br
* dur: duration in stream timescale
.br
* frame: framing status
.br
  * interface: complete AU, interface object (no size info). Typically a GL texture
.br
  * frame_full: complete AU
.br
  * frame_start: begining of frame
.br
  * frame_end: end of frame
.br
  * frame_cont: frame continuation (not begining, not end)
.br
* sap or rap: SAP type of the frame
.br
* ilace: interlacing flag (0: progressive, 1: top field, 2: bottom field)
.br
* corr: corrupted packet flag
.br
* seek: seek flag
.br
* bo: byte offset in source, N/A if not available
.br
* roll: roll info
.br
* crypt: crypt flag
.br
* vers: carrousel version number
.br
* size: size of packet
.br
* crc: 32 bit CRC of packet
.br
* lf: insert linefeed
.br
* cr: insert carriage return
.br
* t: insert tab
.br
* data: hex dump of packet ( WARNING, BIG OUTPUT !! )
.br
* lp: leading picture flag
.br
* depo: depends on other packet flag
.br
* depf: is depended on other packet flag
.br
* red: redundant coding flag
.br
* ck: clock type used for PCR discontinuities
.br
* P4CC: 4CC of packet property
.br
* PropName: Name of packet property
.br
* pid.P4CC: 4CC of PID property
.br
* pid.PropName: Name of PID property
.br

.br
Example
.br
fmt="PID $pid.ID$ packet $pn$ DTS $dts$ CTS $cts$ $lf$"
.br

.br
This dumps packet number, cts and dts as follows: PID 1 packet 10 DTS 100 CTS 108 \n
.br
  
.br
An unrecognized keywork or missing property will resolve to an empty string.
.br

.br
Note: when dumping in interleaved mode, there is no guarantee that the packets will be dumped in their original sequence order since the inspector fetches one packet at a time on each PID.
.br

.br

.br
.SH Options (expert):
.LP
.br
log (str, default: stderr, minmax: fileName, stderr, stdout or null): set inspect log filename
.br
mode (enum, default: pck):     dump mode
.br
* pck: dump full packet
.br
* blk: dump packets before reconstruction
.br
* frame: force reframer
.br
* raw: dump source packets without demuxing
.br

.br
interleave (bool, default: true): dump packets as they are received on each pid. If false, report per pid is generated
.br
deep (bool, default: false, updatable): dump packets along with PID state change, implied when .I fmt is set
.br
props (bool, default: true, updatable): dump packet properties, ignored when .I fmt is set (see filter help)
.br
dump_data (bool, default: false, updatable): enable full data dump (WARNING heavy!), ignored when .I fmt is set (see filter help)
.br
fmt (str, updatable):          set packet dump format (see filter help)
.br
hdr (bool, default: true):     print a header corresponding to fmt string without '$ 'or "pid."
.br
allp (bool, default: false):   analyse for the entire duration, rather than stoping when all pids are found
.br
info (bool, default: false, updatable): monitor PID info changes
.br
pcr (bool, default: false, updatable): dump M2TS PCR info
.br
speed (dbl, default: 1.0):     set playback command speed. If speed is negative and start is 0, start is set to -1
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
dur (frac, default: 0/0):      set inspect duration
.br
analyze (bool, default: false, updatable): analyze sample content (NALU, OBU)
.br
xml (bool, default: false, updatable): use xml formatting (implied if (-analyze]() is set) and disable .I fmt
.br
fftmcd (bool, default: false, updatable): consider timecodes use ffmpeg-compatible signaling rather than QT compliant one
.br
dtype (bool, default: false, updatable): dump property type
.br
test (enum, default: no, updatable): skip predefined set of properties, used for test mode
.br
* no: no properties skipped
.br
* noprop: all properties/info changes on pid are skipped, only packets are dumped
.br
* network: URL/path dump, cache state, file size properties skipped (used for hashing network results)
.br
* netx: same as network but skip track duration and templates (used for hashing progressive load of fmp4)
.br
* encode: same as network plus skip decoder config (used for hashing encoding results)
.br
* encx: same as encode and skip bitrates, media data size and co
.br

.br

.br
.SH probe
.LP
.br
Description: Probe source
.br

.br
The Probe filter is used by applications (typically MP4Box) to query demuxed pids available in a source chain.
.br
The filter does not produce any output nor feedback, it is up to the app developper to query input pids of the prober and take appropriated decisions.
.br

.br
.SH Options (expert):
.LP
.br
log (str, default: stderr, minmax: fileName, stderr, stdout or null): set inspect log filename
.br
mode (enum, default: pck):     dump mode
.br
* pck: dump full packet
.br
* blk: dump packets before reconstruction
.br
* frame: force reframer
.br
* raw: dump source packets without demuxing
.br

.br
interleave (bool, default: true): dump packets as they are received on each pid. If false, report per pid is generated
.br
deep (bool, default: false, updatable): dump packets along with PID state change, implied when .I fmt is set
.br
props (bool, default: true, updatable): dump packet properties, ignored when .I fmt is set (see filter help)
.br
dump_data (bool, default: false, updatable): enable full data dump (WARNING heavy!), ignored when .I fmt is set (see filter help)
.br
fmt (str, updatable):          set packet dump format (see filter help)
.br
hdr (bool, default: true):     print a header corresponding to fmt string without '$ 'or "pid."
.br
allp (bool, default: false):   analyse for the entire duration, rather than stoping when all pids are found
.br
info (bool, default: false, updatable): monitor PID info changes
.br
pcr (bool, default: false, updatable): dump M2TS PCR info
.br
speed (dbl, default: 1.0):     set playback command speed. If speed is negative and start is 0, start is set to -1
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
dur (frac, default: 0/0):      set inspect duration
.br
analyze (bool, default: false, updatable): analyze sample content (NALU, OBU)
.br
xml (bool, default: false, updatable): use xml formatting (implied if (-analyze]() is set) and disable .I fmt
.br
fftmcd (bool, default: false, updatable): consider timecodes use ffmpeg-compatible signaling rather than QT compliant one
.br
dtype (bool, default: false, updatable): dump property type
.br
test (enum, default: no, updatable): skip predefined set of properties, used for test mode
.br
* no: no properties skipped
.br
* noprop: all properties/info changes on pid are skipped, only packets are dumped
.br
* network: URL/path dump, cache state, file size properties skipped (used for hashing network results)
.br
* netx: same as network but skip track duration and templates (used for hashing progressive load of fmp4)
.br
* encode: same as network plus skip decoder config (used for hashing encoding results)
.br
* encx: same as encode and skip bitrates, media data size and co
.br

.br

.br
.SH compositor
.LP
.br
Description: Compositor
.br

.br
The GPAC compositor allows mixing audio, video, text and graphics in a timed fashion.
.br
The compositor operates either in media-client or filter-only mode.
.br

.br
.SH Media-client mode
.LP
.br
In this mode, the compositor acts as a pseudo-sink for the video side and creates its own output window.
.br
The video frames are dispatched to the output video pid in the form of frame pointers requiring later GPU read if used.
.br
The audio part acts as a regular filter, potentially mixing and resampling the audio inputs to generate its output.
.br
User events are directly processed by the filter in this mode.
.br

.br
.SH Filter mode
.LP
.br
In this mode, the compositor acts as a regular filter generating frames based on the loaded scene.
.br
It will generate its outputs based on the input video frames and will not process any user event.
.br
If no input video frames (e.g. pure BIFS / SVG / VRML), the filter will generate frames based on the .I fps, at constant or variable frame rate.
.br
It will stop generating frames as soon as all input streams are done, unless extended/reduced by .I dur.
.br
If audio streams are loaded, an audio output pid is created.
.br

.br
The default output pixel format in filter mode is:
.br
- rgb when the filter is explictly loaded by the application
.br
- rgba when the filter is loaded during a link resolution
.br
This can be changed by assigning the .I opfmt option.
.br

.br
In filter-only mode, the special URL gpid:// is used to locate PIDs in the scene description, in order to design scenes independently from source media.
.br
When such a pid is associated to a Background2D node in BIFS (no SVG mapping yet), the compositor operates in passthrough mode.
.br
In this mode, only new input frames on the passthrough pid will generate new frames, and the scene clock matches the input packet time.
.br
The output size and pixel format will be set to the input size and pixel format, unless specified otherwise in the filter options.
.br

.br
If only 2D graphics are used and display driver is not forced, 2D rasterizer will happen in the output pixel format (including YUV pixel formats).
.br
In this case, inplace processing (rasterizing over the input frame data) will be used whenever allowed by input data.
.br

.br
If 3D graphics are used or display driver is forced, OpenGL will be used on offscreen surface and the output packet will be an OpenGL texture.
.br

.br
.SH Specific URL syntaxes
.LP
.br
The compositor accepts any URL type supported by GPAC. It also accepts the following syntaxes for URLs:
.br
* views: creates an auto-stereo scene of N views from views://v1:.:vN. vN can be any type of URL supported by GPAC.
.br
* mosaic: creates a mosaic of N views from mosaic://v1:.:vN. vN can be any type of URL supported by GPAC.
.br

.br

.br
.SH Options (expert):
.LP
.br
aa (enum, default: all, updatable): set anti-aliasing mode for raster graphics; whether the setting is applied or not depends on the graphics module or graphic card
.br
* none: no anti-aliasing
.br
* text: anti-aliasing for text only
.br
* all: complete anti-aliasing
.br

.br
hlfill (uint, default: 0x0, updatable): set highlight fill color (ARGB)
.br
hlline (uint, default: 0xFF000000, updatable): set highlight stroke color (ARGB)
.br
hllinew (flt, default: 1.0, updatable): set highlight stroke width
.br
sz (bool, default: true, updatable): enable scalable zoom. When scalable zoom is enabled, resizing the output window will also recompute all vectorial objects. Otherwise only the final buffer is stretched
.br
bc (uint, default: 0, updatable): default background color to use when displaying transparent images or video with no scene composition instructions
.br
yuvhw (bool, default: true, updatable): enable YUV hardware for 2D blits
.br
blitp (bool, default: true, updatable): partial hardware blits (if not set, will force more redraw)
.br
softblt (bool, default: true): enable software blit/stretch in 2D. If disabled, vector graphics rasterizer will always be used
.br
stress (bool, default: false, updatable): enable stress mode of compositor (rebuild all vector graphics and texture states at each frame)
.br
fast (bool, default: false, updatable): enable speed optimization - whether the setting is applied or not depends on the graphics module / graphic card
.br
bvol (enum, default: no, updatable): draw bounding volume of objects
.br
* no: disable bounding box
.br
* box: draws a rectangle (2D) or box (3D mode)
.br
* aabb: draws axis-aligned bounding-box tree (3D only)
.br

.br
textxt (enum, default: default, updatable): specify whether text shall be drawn to a texture and then rendered or directly rendered. Using textured text can improve text rendering in 3D and also improve text-on-video like content
.br
* default: use texturing for OpenGL rendering, no texture for 2D rasterizer
.br
* never: never uses text textures
.br
* always: always render text to texture before drawing
.br

.br
out8b (bool, default: false, updatable): convert 10-bit video to 8 bit texture before GPU upload
.br
drop (bool, default: false, updatable): drop late frame when drawing. By default frames are not droped until a heavy desync of 1 sec is observed
.br
sclock (bool, default: false, updatable): force synchronizing all streams on a single clock
.br
sgaze (bool, default: false, updatable): simulate gaze events through mouse
.br
ckey (uint, default: 0, updatable): color key to use in windowless mode (0xFFRRGGBB). GPAC currently does not support true alpha blitting to desktop due to limitations in most windowing toolkit, it therefore uses color keying mechanism. The alpha part of the key is used for global transparency of the output, if supported
.br
timeout (uint, default: 10000, updatable): timeout in ms after which a source is considered dead
.br
fps (frac, default: 30/1, updatable): simulation frame rate when animation-only sources are played (ignored when video is present)
.br
timescale (uint, default: 0, updatable): timescale used for output packets when no input video pid. A value of 0 means fps numerator
.br
autofps (bool, default: true): use video input fps for output. If no video or not set, uses .I fps. Ignored in player mode
.br
vfr (bool, default: false):    only emit frames when changes are detected. Always true in player mode and when filter is dynamically loaded
.br
dur (dbl, default: 0, updatable): duration of generation. Mostly used when no video input is present. Negative values mean number of frames, positive values duration in second, 0 stops as soon as all streams are done
.br
fsize (bool, default: false, updatable): force the scene to resize to the biggest bitmap available if no size info is given in the BIFS configuration
.br
mode2d (enum, default: defer, updatable): specify whether immediate drawing should be used or not
.br
* immediate: the screen is completely redrawn at each frame (always on if passthrough mode is detected)
.br
* defer: object positioning is tracked from frame to frame and dirty rectangles info is collected in order to redraw the minimal amount of the screen buffer
.br
* debug: only renders changed areas, reseting other areas
.br
Whether the setting is applied or not depends on the graphics module and player mode
.br

.br
amc (bool, default: true):     audio multichannel support; if disabled always downmix to stereo. Useful if the multichannel output does not work properly
.br
asr (uint, default: 0):        force output sample rate - 0 for auto
.br
ach (uint, default: 0):        force output channels - 0 for auto
.br
alayout (uint, default: 0):    force output channel layout - 0 for auto
.br
afmt (afmt, default: s16, minmax: none,u8,s16,s24,s32,flt,dbl,u8p,s16p,s24p,s32p,fltp,dblp): force output channel format - 0 for auto
.br
asize (uint, default: 1024):   audio output packet size in samples
.br
abuf (uint, default: 100):     audio output buffer duration in ms - the audio renderer fills the output pid up to this value. A too low value will lower latency but can have real-time playback issues
.br
avol (uint, default: 100, updatable): audio volume in percent
.br
apan (uint, default: 50, updatable): audio pan in percent, 50 is no pan
.br
async (bool, default: true, updatable): audio resynchronization; if disabled, audio data is never dropped but may get out of sync
.br
max_aspeed (dbl, default: 2.0, updatable): silence audio if playback speed is greater than sepcified value
.br
max_vspeed (dbl, default: 4.0, updatable): move to i-frame only decoding if playback speed is greater than sepcified value
.br
buf (uint, default: 3000, updatable): playout buffer in ms. overridden by BufferLenth property of input pid
.br
rbuf (uint, default: 1000, updatable): rebuffer trigger in ms. overridden by RebufferLenth property of input pid
.br
mbuf (uint, default: 3000, updatable): max buffer in ms (must be greater than playout buffer). overridden by BufferMaxOccupancy property of input pid
.br
ntpsync (uint, default: 0, updatable): ntp resync threshold (drops frame if their NTP is more than the given threshold above local ntp), 0 disables ntp drop
.br
nojs (bool, default: false):   disable javascript
.br
noback (bool, default: false): ignore background nodes and viewport fill (usefull when dumping to PNG)
.br
ogl (enum, default: auto, updatable): specify 2D rendering mode
.br
* auto: automatically decides betwwen on, off and hybrid based on content
.br
* off: disables OpenGL; 3D will not be rendered
.br
* on: uses OpenGL for all graphics; this will involve polygon tesselation and 2D graphics will not look as nice as 2D mode
.br
* hybrid: the compositor performs software drawing of 2D graphics with no textures (better quality) and uses OpenGL for all 2D objects with textures and 3D objects
.br

.br
pbo (bool, default: false, updatable): enable PixelBufferObjects to push YUV textures to GPU in OpenGL Mode. This may slightly increase the performances of the playback
.br
nav (enum, default: none, updatable): override the default navigation mode of MPEG-4/VRML (Walk) and X3D (Examine)
.br
* none: disables navigation
.br
* walk: 3D world walk
.br
* fly: 3D world fly (no ground detection)
.br
* pan: 2D/3D world zomm/pan
.br
* game: 3D world game (mouse gives walk direction)
.br
* slide: 2D/3D world slide
.br
* exam: 2D/3D object examine
.br
* orbit: 3D object orbit
.br
* vr: 3D world VR (yaw/pitch/roll)
.br

.br
linegl (bool, default: false, updatable): indicate that outlining shall be done through OpenGL pen width rather than vectorial outlining
.br
epow2 (bool, default: true, updatable): emulate power-of-2 textures for openGL (old hardware). Ignored if OpenGL rectangular texture extension is enabled
.br
* yes: video texture is not resized but emulated with padding. This usually speeds up video mapping on shapes but disables texture transformations
.br
* no: video is resized to a power of 2 texture when mapping to a shape
.br
paa (bool, default: false, updatable): indicate whether polygon antialiasing should be used in full antialiasing mode. If not set, only lines and points antialiasing are used
.br
bcull (enum, default: on, updatable): indicate whether backface culling shall be disable or not
.br
* on: enables backface culling
.br
* off: disables backface culling
.br
* alpha: only enables backface culling for transparent meshes
.br

.br
wire (enum, default: none, updatable): wireframe mode
.br
* none: objects are drawn as solid
.br
* only: objects are drawn as wireframe only
.br
* solid: objects are drawn as solid and wireframe is then drawn
.br

.br
norms (enum, default: none, updatable): normal vector drawing for debug
.br
* none: no normals drawn
.br
* face: one normal per face drawn
.br
* vertex: one normal per vertex drawn
.br

.br
rext (bool, default: true, updatable): use non power of two (rectangular) texture GL extension
.br
cull (bool, default: true, updatable): use aabb culling: large objects are rendered in multiple calls when not fully in viewport
.br
depth_gl_scale (flt, default: 100, updatable): set depth scaler
.br
depth_gl_type (enum, default: none, updatable): set geometry type used to draw depth video
.br
* none: no geometric conversion
.br
* point: compute point cloud from pixel+depth
.br
* strip: same as point but thins point set
.br

.br
nbviews (uint, default: 0, updatable): number of views to use in stereo mode
.br
stereo (enum, default: none, updatable): stereo output type. If your graphic card does not support OpenGL shaders, only top and side modes will be available
.br
* side: images are displayed side by side from left to right
.br
* top: images are displayed from top (laft view) to bottom (right view)
.br
* hmd: same as side except that view aspect ratio is not changed
.br
* ana: standard color anaglyph (red for left view, green and blue for right view) is used (forces views=2)
.br
* cols: images are interleaved by columns, left view on even columns and left view on odd columns (forces views=2)
.br
* rows: images are interleaved by columns, left view on even rows and left view on odd rows (forces views=2)
.br
* spv5: images are interleaved by for SpatialView 5 views display, fullscreen mode (forces views=5)
.br
* alio8: images are interleaved by for Alioscopy 8 views displays, fullscreen mode (forces views=8)
.br
* custom: images are interleaved according to the shader file indicated in .I mvshader. The shader is exposed each view as uniform sampler2D gfViewX, where X is the view number starting from the left
.br

.br
mvshader (str, updatable):     file path to the custom multiview interleaving shader
.br
fpack (enum, default: none, updatable): default frame packing of input video
.br
* none: no frame packing
.br
* top: top bottom frame packing
.br
* side: side by side packing
.br

.br
camlay (enum, default: offaxis, updatable): camera layout in multiview modes
.br
* straight: camera is moved along a straight line, no rotation
.br
* offaxis: off-axis projection is used
.br
* linear: camera is moved along a straight line with rotation
.br
* circular: camera is moved along a circle with rotation
.br

.br
iod (flt, default: 6.4, updatable): inter-occular distance (eye separation) in cm (distance between the cameras). 
.br
rview (bool, default: false, updatable): reverse view order
.br
tvtn (uint, default: 30, updatable): number of point sampling for tile visibility algo
.br
tvtt (uint, default: 0, updatable): number of points above which the tile is considered visible
.br
tvtd (bool, default: false, updatable): disable the tile having full coverage of the SRD, only displaying partial tiles
.br
tvtf (bool, default: false, updatable): force all tiles to be considered visible, regardless of viewpoint
.br
fov (flt, default: 1.570796326794897, updatable): default field of view for VR
.br
vertshader (str):              path to vertex shader file
.br
fragshader (str):              path to fragment shader file
.br
autocal (bool, default: false, updatable): auto callibration of znear/zfar in depth rendering mode
.br
dispdepth (sint, default: -1, updatable): display depth, negative value uses default screen height
.br
dispdist (flt, default: 50, updatable): distance in cm between the camera and the zero-disparity plane. There is currently no automatic calibration of depth in GPAC
.br
focdist (flt, default: 0, updatable): distance of focus point
.br
osize (v2di, default: 0x0, updatable): force output size. If not set, size is derived from inputs
.br
dpi (v2di, default: 96x96, updatable): default dpi if not indicated by video output
.br
dbgpvr (flt, default: 0, updatable): debug scene used by PVR addon
.br
player (enum, default: no):    set compositor in player mode, see filter help
.br
* no: regular mode
.br
* base: player mode
.br
* gui: player mode with GUI auto-start
.br

.br
noaudio (bool, default: false): disable audio output
.br
opfmt (pfmt, default: none, minmax: none,yuv420,yuv420_10,yuv422,yuv422_10,yuv444,yuv444_10,uyvy,vyuy,yuyv,yvyu,nv12,nv21,nv1l,nv2l,yuva,yuvd,yuv444a,grey,algr,gral,rgb4,rgb5,rgb6,rgba,argb,bgra,abgr,rgb,bgr,xrgb,rgbx,xbgr,bgrx,rgbd,rgbds,rgbs,rgbas): pixel format to use for output. Ignored in .I player mode
.br
drv (enum, default: auto):     indicate if graphics driver should be used. Ignored in player mode
.br
* no: never loads a graphics driver (software blitting used, no 3D possible)
.br
* yes: always loads a graphics driver. Output pixel format will be RGB
.br
* auto: decides based on the loaded content
.br

.br

.br
.SH mp4dmx
.LP
.br
Description: ISOBMFF/QT demuxer
.br

.br
This filter demultiplexes ISOBMF and QT files (regular or fragmented).
.br
.SH Track Selection
.LP
.br
The filter can use fragment identifiers of source to select a single track for playback. The allowed fragments are:
.br
 * #audio: only use the first audio track
.br
 * #video: only use the first video track
.br
 * #auxv: only use the first auxiliary video track
.br
 * #pict: only use the first picture track
.br
 * #text: only use the first text track
.br
 * #trackID=VAL: only use the track with given ID
.br
 * #ID=VAL: only use the track with given ID
.br
 * #VAL: only use the track with given ID
.br

.br
.SH Scalable Tracks
.LP
.br
When scalable tracks are present in a file, the reader can operate in 3 modes using .I smode option:
.br
* smode=single: resolves all extractors to extract a single bitstream from a scalable set. The highest level is used
.br
In this mode, there is no enhancement decoder config, only a base one resulting from the merge of the configs
.br
* smode=split: all extractors are removed and every track of the scalable set is declared. In this mode, each enhancement track has no base decoder config
.br
and an enhancement decoder config.
.br
* smode=splitx: extractors are kept in the bitstream, and every track of the scalable set is declared. In this mode, each enhancement track has a base decoder config
.br
 (copied from base) and an enhancement decoder config. This is mostly used for DASHing content.
.br
Warning: smode=splitx will result in extractor NAL units still present in the output bitstream, which shall only be true if the output is ISOBMFF based
.br

.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
allt (bool, default: false):   load all tracks even if unknown
.br
noedit (bool, default: false): do not use edit lists
.br
itt (bool, default: false):    convert all items of root meta into a single PID
.br
itemid (bool, default: true):  keep item IDs in PID properties
.br
smode (enum, default: split):  load mode for scalable/tile tracks
.br
* split: each track is declared, extractors are removed
.br
* splitx: each track is declared, extractors are kept
.br
* single: a single track is declared (highest level for scalable, tile base for tiling)
.br

.br
alltk (bool, default: false):  declare all tracks even disabled ones
.br
frame_size (uint, default: 1024): frame size for raw audio samples (dispatches frame_size samples per packet)
.br
expart (bool, default: false): expose cover art as a dedicated video pid
.br
sigfrag (bool, default: false): signal fragment and segment boundaries of source on output packets
.br
tkid (str):                    declare only track based on given param- integer value: declares track with the given ID
.br
* audio: declares first audio track
.br
* video: declares first video track
.br
* 4CC: declares first track with matching 4CC for handler type
.br
stsd (uint, default: 0):       only extract sample mapped to the given sample desciption index. 0 means no filter
.br
nocrypt (bool):                signal encrypted tracks as non encrypted (mostly used for export)
.br
mstore_size (uint, default: 1000000): target buffer size in bytes
.br
mstore_purge (uint, default: 50000): minimum size in bytes between memory purges when reading from memory stream (pipe etc...), 0 means purge as soon as possible
.br
mstore_samples (uint, default: 50): minimum number of samples to be present before purging sample tables when reading from memory stream (pipe etc...), 0 means purge as soon as possible
.br
strtxt (bool, default: false): load text tracks (apple/tx3g) as MPEG-4 streaming text tracks
.br

.br
.SH bifsdec
.LP
.br
Description: MPEG-4 BIFS decoder
.br

.br
This filter decodes MPEG-4 BIFS frames directly into the scene graph of the compositor. It cannot be used to dump BIFS content.
.br

.br
No options
.br

.br
.SH odfdec
.LP
.br
Description: MPEG-4 OD decoder
.br

.br
This filter decodes MPEG-4 OD frames directly into the scene manager of the compositor. It cannot be used to dump OD content.
.br

.br
No options
.br

.br
.SH fin
.LP
.br
Description: File input
.br

.br
This filter dispatch raw blocks from input file into a filter chain.
.br
Block size can be adjusted using .I block_size.
.br
Content format can be forced through .I mime and file extension can be changed through .I ext.
.br
Note: Unless disabled at session level (see .I -no-probe ), file extensions are usually ignored and format probing is done on the first data block.
.br
The special file name null is used for creating a file with no data, needed by some filters such as dasher.
.br
The special file name rand is used to generate random data.
.br
The special file name randsc is used to generate random data with fake startcodes (0x000001).
.br

.br
The filter handles both files and GF_FileIO objects as input URL.
.br

.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
block_size (uint, default: 0): block size used to read file. 0 means 5000 if file less than 500m, 1M otherwise
.br
range (lfrac, default: 0-0):   byte range
.br
ext (cstr):                    override file extension
.br
mime (cstr):                   set file mime type
.br

.br
.SH btplay
.LP
.br
Description: BT/XMT/X3D loader
.br

.br
This filter parses MPEG-4 BIFS (BT and XMT), VRML97 and X3D (wrl and XML) files directly into the scene graph of the compositor. It cannot be used to dump content.
.br

.br
.SH Options (expert):
.LP
.br
progressive (bool, default: false): enable progressive loading
.br
sax_dur (uint, default: 1000): loading duration for SAX parsing (XMT), 0 disables SAX parsing
.br

.br
.SH httpin
.LP
.br
Description: HTTP input
.br

.br
This filter dispatch raw blocks from a remote HTTP resource into a filter chain.
.br
Block size can be adjusted using .I block_size, and disk caching policies can be adjusted.
.br
Content format can be forced through .I mime and file extension can be changed through .I ext.
.br
Note: Unless disabled at session level (see .I -no-probe ), file extensions are usually ignored and format probing is done on the first data block.
.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
block_size (uint, default: 100000): block size used to read file
.br
cache (enum, default: disk):   set cache mode
.br
* disk: cache to disk,  discard once session is no longer used
.br
* keep: cache to disk and keep
.br
* mem: stores to memory, discard once session is no longer used
.br
* none: no cache
.br

.br
range (lfrac, default: 0-0):   set byte range, as fraction
.br
ext (cstr):                    override file extension
.br
mime (cstr):                   set file mime type
.br

.br
.SH svgplay
.LP
.br
Description: SVG loader
.br

.br
This filter parses SVG files directly into the scene graph of the compositor. It cannot be used to dump content.
.br

.br
.SH Options (expert):
.LP
.br
sax_dur (uint, default: 0):    loading duration for SAX parsing, 0 disables SAX parsing
.br

.br
.SH rfimg
.LP
.br
Description: JPG/J2K/PNG/BMP reframer
.br

.br
This filter parses JPG/J2K/PNG/BMP files/data and outputs corresponding visual PID and frames.
.br

.br
.SH Options (expert):
.LP
.br

.br
.SH imgdec
.LP
.br
Description: PNG/JPG decoder
.br

.br
This filter decodes JPEG and PNG images.
.br

.br
No options
.br

.br
.SH rfadts
.LP
.br
Description: ADTS reframer
.br

.br
This filter parses AAC files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
frame_size (uint, default: 1024): size of AAC frame in audio samples
.br
index (dbl, default: 1.0):     indexing window length
.br
ovsbr (bool, default: false):  force oversampling SBR (does not multiply timescales by 2)
.br
sbr (enum, default: no):       set SBR signaling
.br
* no: no SBR signaling at all
.br
* imp: backward-compatible SBR signaling (audio signaled as AAC-LC)
.br
* exp: explicit SBR signaling (audio signaled as AAC-SBR)
.br

.br
ps (enum, default: no):        set PS signaling
.br
* no: no PS signaling at all
.br
* imp: backward-compatible PS signaling (audio signaled as AAC-LC)
.br
* exp: explicit PS signaling (audio signaled as AAC-PS)
.br

.br
expart (bool, default: false): expose pictures as a dedicated video pid
.br

.br
.SH rflatm
.LP
.br
Description: LATM reframer
.br

.br
This filter parses AAC in LATM files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
frame_size (uint, default: 1024): size of AAC frame in audio samples
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH rfmp3
.LP
.br
Description: MP3 reframer
.br

.br
This filter parses MPEG-1/2 audio files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length
.br
expart (bool, default: false): expose pictures as a dedicated video pid
.br

.br
.SH faad
.LP
.br
Description: FAAD decoder
.br

.br
This filter decodes AAC streams through faad library.
.br

.br
No options
.br

.br
.SH maddec
.LP
.br
Description: MAD decoder
.br

.br
This filter decodes MPEG 1/2 audio streams through libmad library.
.br

.br
No options
.br

.br
.SH xviddec
.LP
.br
Description: XVid decoder
.br

.br
This filter decodes MPEG-4 part 2 (and DivX) through libxvidcore library.
.br

.br
.SH Options (expert):
.LP
.br
deblock_y (bool, default: false): enable Y deblocking
.br
deblock_uv (bool, default: false): enable UV deblocking
.br
film_effect (bool, default: false): enable film effect
.br
dering_y (bool, default: false): enable Y deblocking
.br
dering_uv (bool, default: false): enable UV deblocking
.br

.br
.SH j2kdec
.LP
.br
Description: OpenJPEG2000 decoder
.br
Version: 2.x
.br

.br
This filter decodes JPEG2000 streams through OpenJPEG2000 library.
.br

.br
No options
.br

.br
.SH rfac3
.LP
.br
Description: AC3 reframer
.br

.br
This filter parses AC3 and E-AC3 files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH a52dec
.LP
.br
Description: A52 decoder
.br

.br
This filter decodes AC3 streams through a52dec library.
.br

.br
No options
.br

.br
.SH rfamr
.LP
.br
Description: AMR/EVRC reframer
.br

.br
This filter parses AMR, AMR Wideband, EVRC and SMV files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH oggdmx
.LP
.br
Description: OGG demuxer
.br

.br
This filter demultiplexes OGG files/data into a set of media PIDs and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length (unimplemented, only 0 disables stream probing for duration), 
.br

.br
.SH vorbisdec
.LP
.br
Description: Vorbis decoder
.br

.br
This filter decodes Vorbis streams through libvorbis library.
.br

.br
No options
.br

.br
.SH theoradec
.LP
.br
Description: Theora decoder
.br

.br
This filter decodes Theora streams through libtheora library.
.br

.br
No options
.br

.br
.SH m2tsdmx
.LP
.br
Description: MPEG-2 TS demuxer
.br

.br
This filter demultiplexes MPEG-2 Transport Stream files/data into a set of media PIDs and frames.
.br

.br
.SH Options (expert):
.LP
.br
temi_url (cstr):               force TEMI URL
.br
dsmcc (bool, default: no):     enable DSMCC receiver
.br
seeksrc (bool, default: true): seek local source file back to origin once all programs are setup
.br

.br
.SH sockin
.LP
.br
Description: UDP/TCP input
.br

.br
This filter handles generic TCP and UDP input sockets. It can also probe for MPEG-2 TS over RTP input. Probing of MPEG-2 TS over UDP/RTP is enabled by default but can be turned off.
.br

.br
Data format can be specified by setting either .I ext or .I mime options. If not set, the format will be guessed by probing the first data packet
.br

.br
- UDP sockets are used for source URLs formatted as udp://NAME
.br
- TCP sockets are used for source URLs formatted as tcp://NAME
.br
- UDP unix domain sockets are used for source URLs formatted as udpu://NAME
.br
- TCP unix domain sockets are used for source URLs formatted as tcpu://NAME
.br

.br
On OSX with VM packet replay you will need to force multicast routing, eg: route add -net 239.255.1.4/32 -interface vboxnet0
.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
block_size (uint, default: 10000): block size used to read socket
.br
sockbuf (uint, default: 65536): socket max buffer size
.br
port (uint, default: 1234):    default port if not specified
.br
ifce (cstr):                   default multicast interface
.br
listen (bool, default: false): indicate the input socket works in server mode
.br
ka (bool, default: false):     keep socket alive if no more connections
.br
maxc (uint, default: +I):      max number of concurrent connections
.br
tsprobe (bool, default: true): probe for MPEG-2 TS data, either RTP or raw UDP. Disabled if mime or ext are given and do not match MPEG-2 TS mimes/extensions
.br
ext (str):                     indicate file extension of udp data
.br
mime (str):                    indicate mime type of udp data
.br
block (bool, default: false):  set blocking mode for socket(s)
.br
timeout (uint, default: 5000): set timeout in ms for UDP socket(s)
.br
reorder_pck (uint, default: 100): number of packets delay for RTP reordering (M2TS over RTP) 
.br
reorder_delay (uint, default: 10): number of ms delay for RTP reordering (M2TS over RTP)
.br

.br
.SH dvbin
.LP
.br
Description: DVB for Linux
.br

.br
Experimental DVB support for linux, requires a channel config file through .I chcfg
.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
block_size (uint, default: 65536): block size used to read file
.br
chcfg (cstr):                  path to channels.conf file
.br

.br
.SH osvcdec
.LP
.br
Description: OpenSVC decoder
.br

.br
This filter decodes scalable AVC|H264 streams through OpenSVC library.
.br

.br
No options
.br

.br
.SH vtbdec
.LP
.br
Description: VideoToolBox decoder
.br

.br
This filter decodes MPEG-2, H263, AVC|H264 and HEVC streams through VideoToolBox. It allows GPU frame dispatch or direct frame copy.
.br

.br
.SH Options (expert):
.LP
.br
reorder (uint, default: 6):    number of frames to wait for temporal re-ordering
.br
no_copy (bool, default: true): dispatch VTB frames into filter chain (no copy)
.br
ofmt (pfmt, default: nv12):    set default pixel format for decoded video. If not matched default to nv12
.br
disable_hw (bool, default: false): disable hardware decoding
.br

.br
.SH mcdec
.LP
.br
Description: MediaCodec decoder
.br

.br
This filter decodes video streams using hardware decoder on android devices
.br

.br
.SH Options (expert):
.LP
.br
disable_gl (bool, default: false): disable OpenGL texture transfer
.br

.br
.SH lsrdec
.LP
.br
Description: MPEG-4 LASeR decoder
.br

.br
This filter decodes MPEG-4 LASeR frames directly into the scene graph of the compositor. It cannot be used to dump LASeR content.
.br

.br
No options
.br

.br
.SH safdmx
.LP
.br
Description: SAF demuxer
.br

.br
This filter demultiplexes SAF (MPEG-4 Simple Aggregation Format for LASeR) files/data into a set of media PIDs and frames.
.br

.br
No options
.br

.br
.SH dashin
.LP
.br
Description: MPEG-DASH and HLS client
.br

.br
This filter reads MPEG-DASH, HLS and MS Smooth (on demand only for now) manifests and produces media PIDs and frames.
.br

.br
.SH Options (expert):
.LP
.br
auto_switch (uint, default: 0): switch quality every N segments, disabled if 0
.br
segstore (enum, default: mem): enable file caching
.br
* mem: all files are stored in memory, no disk IO
.br
* file: files are stored to disk but discarded once played
.br
* cache: all files are stored to disk and kept
.br

.br
algo (enum, default: gbuf):    adaptation algorithm to use
.br
* none: no adaptation logic
.br
* grate: GAPC legacy algo based on available rate
.br
* gbuf: GAPC legacy algo based on buffer occupancy
.br
* bba0: BBA-0
.br
* bolaf: BOLA Finite
.br
* bolab: BOLA Basic
.br
* bolau: BOLA-U
.br
* bolao: BOLA-O
.br

.br
start_with (enum, default: max_bw): initial selection criteria
.br
* min_q: start with lowest quality
.br
* max_q: start with highest quality
.br
* min_bw: start with lowest bitrate
.br
* max_bw: start with highest bitrate; for tiles are used, all low priority tiles will have the lower (below max) bandwidth selected
.br
* max_bw_tiles: start with highest bitrate; for tiles all low priority tiles will have their lowest bandwidth selected
.br

.br
max_res (bool, default: true): use max media resolution to configure display
.br
immediate (bool, default: false): when interactive switching is requested and immediate is set, the buffer segments are trashed
.br
abort (bool, default: false):  allow abort during a segment download
.br
use_bmin (bool, default: false): use the indicated min buffer time of the MPD if true, otherwise uses default player settings
.br
shift_utc (sint, default: 0):  shift DASH UTC clock in ms
.br
atsc_shift (sint, default: 0): shift ATSC requests time by given ms
.br
server_utc (bool, default: yes): use ServerUTC: or Date: http headers instead of local UTC
.br
screen_res (bool, default: yes): use screen resolution in selection phase
.br
init_timeshift (uint, default: 0): set initial timshift in ms (if >0) or in per-cent of timeshift buffer (if <0)
.br
tile_mode (enum, default: none): tile adaptation mode
.br
* none: bitrate is shared equaly accross all tiles
.br
* rows: bitrate decreases for each row of tiles starting from the top, same rate for each tile on the row
.br
* rrows: bitrate decreases for each row of tiles starting from the bottom, same rate for each tile on the row
.br
* mrows: bitrate decreased for top and bottom rows only, same rate for each tile on the row
.br
* cols: bitrate decreases for each columns of tiles starting from the left, same rate for each tile on the columns
.br
* rcols: bitrate decreases for each columns of tiles starting from the right, same rate for each tile on the columns
.br
* mcols: bitrate decreased for left and right columns only, same rate for each tile on the columns
.br
* center: bitrate decreased for all tiles on the edge of the picture
.br
* edges: bitrate decreased for all tiles on the center of the picture
.br

.br
tiles_rate (uint, default: 100): indicate the amount of bandwidth to use at each quality level. The rate is recursively applied at each level, e.g. if 50%, Level1 gets 50%, level2 gets 25%, ... If 100, automatic rate allocation will be done by maximizing the quality in order of priority. If 0, bitstream will not be smoothed across tiles/qualities, and concurrency may happen between different media
.br
delay40X (uint, default: 500): delay in millisconds to wait between two 40X on the same segment
.br
exp_threshold (uint, default: 100): delay in millisconds to wait after the segment AvailabilityEndDate before considering the segment lost
.br
switch_count (uint, default: 1): indicate how many segments the client shall wait before switching up bandwidth. If 0, switch will happen as soon as the bandwidth is enough, but this is more prone to network variations
.br
aggressive (bool, default: no): if enabled, switching algo targets the closest bandwidth fitting the available download rate. If no, switching algo targets the lowest bitrate representation that is above the currently played (eg does not try to switch to max bandwidth)
.br
debug_as (uint, default: -1):  play only the adaptation set indicated by its index in the MPD; if negative, all sets are used
.br
speedadapt (bool, default: no): enable adaptation based on playback speed
.br
noxlink (bool, default: no):   disable xlink if period has both xlink and adaptation sets
.br
query (str):                   set query string (without initial '?') to append to xlink of periods
.br
split_as (bool, default: no):  separate all qualities into different adaptation sets and stream all qualities
.br
noseek (bool, default: no):    disable seeking of initial segment(s) in dynamic mode (useful when UTC clocks do not match)
.br
lowlat (enum, default: early): segment scheduling policy in low latency mode
.br
* no: disable low latency
.br
* strict: strict respect of AST offset in low latency
.br
* early: allow fetching segments earlier than their AST in low latency when input demux is empty
.br

.br

.br
.SH cdcrypt
.LP
.br
Description: CENC decryptor
.br

.br
The CENC decryptor supports decrypting CENC, ISMA and Adobe streams. It uses a configuration file for retrieving keys.
.br
The syntax is available at https://wiki.gpac.io/Common-Encryption
.br
The file can be set per PID using the property DecryptInfo (highest priority), CryptInfo (lower priority) or set at the filter level using .I cfile (lowest priority).
.br
When the file is set per PID, the first CryptInfo with the same ID is used, otherwise the first CryptInfo is used.
.br

.br
.SH Options (expert):
.LP
.br
cfile (str):                   crypt file location - see filter help
.br

.br
.SH cecrypt
.LP
.br
Description: CENC  encryptor
.br

.br
The CENC encryptor supports CENC, ISMA and Adobe encryption. It uses a DRM config file for declaring keys.
.br
The syntax is available at https://wiki.gpac.io/Common-Encryption
.br
The DRM config file can be set per PID using the property CryptInfo, or set at the filter level using .I cfile.
.br
When the DRM config file is set per PID, the first CrypTrack in the DRM config file with the same ID is used, otherwise the first CrypTrack is used.
.br
If no DRM config file is defined for a given PID, this PID will not be encrypted, or an error will be thrown if .I allc is specified.
.br

.br

.br
.SH Options (expert):
.LP
.br
cfile (str):                   crypt file location - see filter help
.br
allc (str):                    throw error if no DRM config file is found for a PID - see filter help
.br

.br
.SH mp4mx
.LP
.br
Description: ISOBMFF/QT muxer
.br

.br
Muxes file according to ISOBMFF (14496-12 and derived specifications) or QuickTime
.br
  
.br
.SH Tracks and Items
.LP
.br
By default all input PIDs with ItemID property set are muxed as items, otherwise they are muxed as tracks.
.br
To prevent source items to be muxed as items, use .I -itemid option from ISOBMF demuxer.
.br
Example
.br
-i source.mp4:itemid=false -o file.mp4
.br

.br
  
.br
To force non-item streams to be muxed as items, use #ItemID option on that PID:
.br
Example
.br
-i source.jpg:#ItemID=1 -o file.mp4
.br

.br
  
.br
.SH Storage
.LP
.br
The .I store option allows controling if the file is fragmented ot not, and when not fragmented, how interleaving is done. For cases where disk requirements are tight and fragmentation cannot be used, it is recommended to use either flat or fstart modes.
.br
  
.br
The .I vodcache option allows controling how DASH onDemand segments are generated:
.br
- If set to on, file data is stored to a temporary file on disk and flushed upon completion, no padding is present.
.br
- If set to insert, SIDX/SSIX will be injected upon completion of the file by shifting bytes in file. In this case, no padding is required but this might not be compatible with all output sinks and will take longer to write the file.
.br
- If set to replace, SIDX/SSIX size will be estimated based on duration and DASH segment length, and padding will be used in the file before the final SIDX. If input pids have the properties DSegs set, this will be as the number of segments.
.br
The on and insert modes will produce exactly the same file, while the mode replace may inject a free box before the sidx.
.br
  
.br
.SH Custom boxes
.LP
.br
Custom boxes can be specified as box patches:
.br
For movie-level patch, the .I boxpatch option of the filter should be used.
.br
Per PID box patch can be specified through the PID property boxpatch.
.br
Example
.br
src=source:#boxpatch=myfile.xml dst=mux.mp4
.br

.br
Per Item box patch can be specified through the PID property boxpatch.
.br
Example
.br
src=source:1ItemID=1:#boxpatch=myfile.xml dst=mux.mp4
.br

.br
  
.br
The box patch is applied before writing the initial moov box in fragmented mode, or when writing the complete file otherwise.
.br
The box patch can either be a filename or the full XML string.
.br
  
.br
.SH Tagging
.LP
.br
When tagging is enabled, the filter will watch the property CoverArt and all custom properties on incoming pid.
.br
The built-in tag names are album, artist, comment, complilation, composer, year, disk, tool, genre, contentgroup, title, tempo, track, tracknum, writer, encoder, album_artist, gapless, conductor.
.br
Other tag class may be specified using tag_NAME property names, and will be added if .I tags is set to all using:
.br
- NAME as a box 4CC if NAME is four characters long
.br
- the CRC32 of the NAME as a box 4CC if NAME is not four characters long
.br
  
.br
.SH Notes
.LP
.br
The filter watches the property FileNumber on incoming packets to create new files or new segments in DASH mode.
.br

.br

.br
.SH Options (expert):
.LP
.br
m4sys (bool, default: false):  force MPEG-4 Systems signaling of tracks
.br
dref (bool, default: false):   only references data from source file - not compatible with all media sources
.br
ctmode (enum, default: edit):  set composition offset mode for video tracks
.br
* edit: uses edit lists to shift first frame to presentation time 0
.br
* noedit: ignore edit lists and does not shift timeline
.br
* negctts: uses ctts v1 with possibly negative offsets and no edit lists
.br

.br
idur (frac, default: 0):       only import the specified duration. If negative, specify the number of coded frames to import
.br
pack3gp (uint, default: 1):    pack a given number of 3GPP audio frames in one sample
.br
importer (bool, default: false): compatibility with old importer, displays import progress
.br
pack_nal (bool, default: false): repack NALU size length to minimum possible size for NALU-based video (AVC/HEVC/...)
.br
xps_inband (enum, default: no): use inband (in sample data) param set for NALU-based video (AVC/HEVC/...)
.br
* no: paramater sets are not inband, several sample descriptions might be created
.br
* all: paramater sets are inband, no param sets in sample description
.br
* both: paramater sets are inband, signaled as inband, and also first set is kept in sample descripton
.br
* mix: creates non-standard files using single sample entry with first PSs found, and moves other PS inband
.br

.br
store (enum, default: inter):  file storage mode
.br
* inter: perform precise interleave of the file using .I cdur (requires temporary storage of all media)
.br
* flat: write samples as they arrive and moov at end (fastest mode)
.br
* fstart: write samples as they arrive and moov before mdat
.br
* tight:  uses per-sample interleaving of all tracks (requires temporary storage of all media)
.br
* frag: fragments the file using cdur duration
.br
* sfrag: framents the file using cdur duration but adjusting to start with SAP1/3
.br

.br
cdur (dbl, default: -1.0):     chunk duration for interleaving and fragmentation modes
.br
* 0: no specific interleaving but moov first
.br
* negative: defaults to 1.0 unless overridden by storage profile
.br
moovts (sint, default: 600):   timescale to use for movie. A negative value picks the media timescale of the first track added
.br
moof_first (bool, default: true): generate fragments starting with moof then mdat
.br
abs_offset (bool, default: false): use absolute file offset in fragments rather than offsets from moof
.br
fsap (bool, default: true):    split truns in video fragments at SAPs to reduce file size
.br
subs_sidx (sint, default: -1): number of subsegments per sidx. negative value disables sidx, -2 removes sidx if present in source pid
.br
m4cc (str):                    4 character code of empty box to appen at the end of a segment
.br
chain_sidx (bool, default: false): use daisy-chaining of SIDX
.br
msn (uint, default: 1):        sequence number of first moof to N
.br
msninc (uint, default: 1):     sequence number increase between moofs
.br
tfdt (lfrac, default: 0):      set TFDT of first traf
.br
tfdt_traf (bool, default: false): set TFDT in each traf
.br
nofragdef (bool, default: false): disable default flags in fragments
.br
straf (bool, default: false):  use a single traf per moov (smooth streaming and co)
.br
strun (bool, default: false):  use a single trun per traf (smooth streaming and co)
.br
psshs (enum, default: moov):   set PSSH boxes store mode
.br
* moof: in first moof of each segments
.br
* moov: in movie box
.br
* none: pssh is discarded
.br

.br
sgpd_traf (bool, default: false): store sample group descriptions in traf (duplicated for each traf). If not used, sample group descriptions are stored in the movie box
.br
vodcache (enum, default: replace): enable temp storage for VoD dash modes - see filter help
.br
* on: use temp storage of complete file for sidx and ssix injection
.br
* insert: insert sidx and ssix by shifting bytes in output file
.br
* replace: precompute pace requirements for sidx and ssix and rewrite file range at end
.br

.br
noinit (bool, default: false): do not produce initial moov, used for DASH bitstream switching mode
.br
tktpl (enum, default: yes):    use track box from input if any as a template to create new track
.br
* no: disables template
.br
* yes: clones the track (except edits and decoder config)
.br
* udta: only loads udta
.br

.br
mudta (enum, default: yes):    use udta and other moov extension boxes from input if any
.br
* no: disables import
.br
* yes: clones all extension boxes
.br
* udta: only loads udta
.br

.br
tmpd (str):                    set temp directory for intermediate file(s)
.br
mvex (bool, default: false):   set mvex after tracks
.br
sdtp_traf (enum, default: no): use sdtp in traf rather than using flags in trun sample entries
.br
* no: do not use sdtp
.br
* sdtp: use sdtp box to indicate sample dependencies and don't write info in trun sample flags
.br
* both: use sdtp box to indicate sample dependencies and also write info in trun sample flags
.br

.br
trackid (uint, default: 0):    track ID of created track for single track. Default 0 uses next available trackID
.br
fragdur (bool, default: false): fragment based on fragment duration rather than CTS. Mostly used for MP4Box -frag option
.br
btrt (bool, default: true):    set btrt box in sample description
.br
styp (str):                    set segment styp major brand to the given 4CC[.version]
.br
mediats (sint, default: 0):    set media timescale. A value of 0 means inherit from pid, a value of -1 means derive from samplerate or frame rate
.br
ase (enum, default: v0):       set audio sample entry mode for more than stereo layouts
.br
* v0: use v0 signaling but channel count from stream, recommended for backward compatibility
.br
* v0s: use v0 signaling and force channel count to 2 (stereo) if more than 2 channels
.br
* v1: use v1 signaling, ISOBMFF style (will mux raw PCM as ISOBMFF style)
.br
* v1qt: use v1 signaling, QTFF style
.br

.br
ssix (bool, default: false):   create ssix when sidx is present, level 1 mappping I-frames byte ranges, level 0xFF mapping the rest
.br
ccst (bool, default: false):   insert coding constraint box for video tracks
.br
maxchunk (uint, default: 0):   set max chunk size in bytes for runs (only used in non-fragmented mode). 0 means no constraints
.br
noroll (bool, default: false): disable roll sample grouping
.br
saio32 (bool, default: false): set single segment mode for dash
.br
compress (enum, default: no):  set top-level box compression mode
.br
* no: disable box compression
.br
* moov: compress only moov box
.br
* moof: compress only moof boxes
.br
* sidx: compress moof and sidx boxes
.br
* ssix: compress moof, sidx and ssix boxes
.br
* all: compress moov, moof, sidx and ssix boxes
.br

.br
fcomp (bool, default: false):  force using compress box even when compressed size is larger than uncompressed
.br
trun_inter (bool, default: false): interleave samples in trun based on the temporal level, the lowest level are stored first - this will create as many trun as required
.br
block_size (uint, default: 10000): target output block size, 0 for default internal value (10k)
.br
boxpatch (str):                apply box patch before writing
.br
deps (bool, default: true):    add samples dependencies information
.br
mfra (bool, default: false):   enable movie fragment random access when fragmenting (ignored when dashing)
.br
forcesync (bool, default: false): force all SAP types to be considered sync samples (might produce non-conformant files)
.br
tags (enum, default: strict):  tag injection mode
.br
* none: do not inject tags
.br
* strict: only inject recognized itunes tags
.br
* all: inject all possible tags
.br

.br

.br
.SH rfqcp
.LP
.br
Description: QCP reframer
.br

.br
This filter parses QCP files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH rfh263
.LP
.br
Description: H263 reframer
.br

.br
This filter parses H263 files/data and outputs corresponding visual PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 15000/1000): import frame rate
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH rfmpgvid
.LP
.br
Description: M1V/M2V/M4V reframer
.br

.br
This filter parses MPEG-1/2 and MPEG-4 part 2 video files/data and outputs corresponding video PID and frames.
.br
Note: The demux uses negative CTS offsets: CTS is corrrect, but some frames may have DTS greater than CTS.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 0/1000):   import frame rate (0 default to FPS from bitstream or 25 Hz)
.br
index (dbl, default: 1.0):     indexing window length
.br
vfr (bool, default: false):    set variable frame rate import
.br
importer (bool, default: false): compatibility with old importer, displays import results
.br

.br
.SH nhntr
.LP
.br
Description: NHNT reader
.br

.br
This filter reads NHNT files/data to produce a media PID and frames.
.br
NHNT documentation is available at https://wiki.gpac.io/NHNT-Format
.br

.br

.br
.SH Options (expert):
.LP
.br
reframe (bool, default: false): force reparsing of referenced content
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH nhmlr
.LP
.br
Description: NHML parser
.br

.br
This filter reads NHML files/data to produce a media PID and frames.
.br
NHML documentation is available at https://wiki.gpac.io/NHML-Format
.br

.br

.br
.SH Options (expert):
.LP
.br
reframe (bool, default: false): force reparsing of referenced content
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH rfnalu
.LP
.br
Description: AVC/HEVC reframer
.br

.br
This filter parses AVC|H264 and HEVC files/data and outputs corresponding video PID and frames.
.br
This demuxer only produces ISOBMFF-compatible output: start codes are removed, NALU length field added and avcC/hvcC config created.
.br
Note: The demux uses negative CTS offsets: CTS is corrrect, but some frames may have DTS greater than CTS.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 0/1000):   import frame rate (0 default to FPS from bitstream or 25 Hz)
.br
index (dbl, default: -1.0):    indexing window length. If 0, bitstream is not probed for duration. A negative value skips the indexing if the source file is larger than 100M (slows down importers) unless a play with start range > 0 is issued, otherwise uses the positive value
.br
explicit (bool, default: false): use explicit layered (SVC/LHVC) import
.br
strict_poc (bool, default: false): delay frame output of an entire GOP to ensure CTS info is correct when POC suddenly changes
.br
nosei (bool, default: false):  remove all sei messages
.br
nosvc (bool, default: false):  remove all SVC/MVC/LHVC data
.br
novpsext (bool, default: false): remove all VPS extensions
.br
importer (bool, default: false): compatibility with old importer, displays import results
.br
nal_length (uint, default: 4): set number of bytes used to code length field: 1, 2 or 4
.br
subsamples (bool, default: false): import subsamples information
.br
deps (bool, default: false):   import samples dependencies information
.br
seirw (bool, default: true):   rewrite AVC sei messages for ISOBMFF constraints
.br
audelim (bool, default: false): keep Access Unit delimiter in payload
.br

.br
.SH m2psdmx
.LP
.br
Description: MPEG PS demuxer
.br

.br
This filter demultiplexes MPEG-2 program stream files/data to produce media PIDs and frames.
.br

.br
No options
.br

.br
.SH avidmx
.LP
.br
Description: AVI demuxer
.br

.br
This filter demultiplexes AVI files/data to produce media PIDs and frames.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 1/0):      import frame rate, default is AVI one
.br
importer (bool, default: false): compatibility with old importer, displays import results
.br

.br
.SH txtin
.LP
.br
Description: Subtitle loader
.br

.br
This filter reads subtitle data (srt/webvtt/ttxt/sub) to produce media PIDs and frames.
.br
The TTXT documentation is available at https://wiki.gpac.io/TTXT-Format-Documentation
.br

.br

.br
.SH Options (expert):
.LP
.br
webvtt (bool, default: false): force WebVTT import of SRT files
.br
nodefbox (bool, default: false): skip default text box
.br
noflush (bool, default: false): skip final sample flush for srt
.br
fontname (str):                default font to use
.br
fontsize (uint, default: 18):  default font size
.br
lang (str):                    default language to use
.br
width (uint, default: 0):      default width of text area, set to 0 to resolve against visual PIDs
.br
height (uint, default: 0):     default height of text area, set to 0 to resolve against visual PIDs
.br
txtx (uint, default: 0):       default horizontal offset of text area: -1 (left), 0 (center) or 1 (right)
.br
txty (uint, default: 0):       default vertical offset of text area: -1 (bottom), 0 (center) or 1 (top)
.br
zorder (sint, default: 0):     default z-order of the PID
.br
timescale (uint, default: 1000): default timescale of the PID
.br

.br
.SH ttxtdec
.LP
.br
Description: TTXT/TX3G decoder
.br

.br
This filter decodes TTXT/TX3G streams into a BIFS scene graph of the compositor filter.
.br
The TTXT documentation is available at https://wiki.gpac.io/TTXT-Format-Documentation
.br

.br

.br
.SH Options (expert):
.LP
.br
texture (bool, default: false): use texturing for output text
.br
outline (bool, default: false): draw text outline
.br
txtw (uint, default: 400):     default width in standalone rendering
.br
txth (uint, default: 200):     default height in standalone rendering
.br

.br
.SH vttdec
.LP
.br
Description: WebVTT decoder
.br

.br
This filter decodes WebVTT streams into a SVG scene graph of the compositor filter.
.br
The scene graph creation is done through JavaScript.
.br
The filter options are used to override the JS global variables of the WebVTT renderer.
.br

.br
.SH Options (expert):
.LP
.br
script (str, default: $GSHARE/scripts/webvtt-renderer.js): location of WebVTT SVG JS renderer
.br
font (str, default: SANS, updatable): font to use
.br
fontSize (flt, default: 20, updatable): font size to use
.br
color (str, default: white, updatable): color to use
.br
lineSpacing (flt, default: 1.0, updatable): line spacing as scaling factor to font size
.br
txtx (flt, default: 5, updatable): horizontal offset
.br
txty (flt, default: 5, updatable): vertical offset
.br
txtw (uint, default: 400):     default width in standalone rendering
.br
txth (uint, default: 200):     default height in standalone rendering
.br

.br
.SH ttmldec
.LP
.br
Description: TTML decoder
.br

.br
This filter decodes TTML streams into a SVG scene graph of the compositor filter.
.br
The scene graph creation is done through JavaScript.
.br
The filter options are used to override the JS global variables of the TTML renderer.
.br

.br
.SH Options (expert):
.LP
.br
script (str, default: $GSHARE/scripts/ttml-renderer.js): location of TTML SVG JS renderer
.br
font (str, default: SANS, updatable): font to use
.br
fontSize (flt, default: 20, updatable): font size to use
.br
color (str, default: white, updatable): color to use
.br
valign (enum, default: bottom, updatable): vertical alignment
.br
* bottom: align text at bottom of text area
.br
* center: align text at center of text area
.br
* top: align text at top of text area
.br

.br
lineSpacing (flt, default: 1.0, updatable): line spacing as scaling factor to font size
.br
txtx (flt, default: 5, updatable): horizontal offset
.br
txty (flt, default: 5, updatable): vertical offset
.br
txtw (uint, default: 400):     default width in standalone rendering
.br
txth (uint, default: 200):     default height in standalone rendering
.br

.br
.SH rtpin
.LP
.br
Description: RTP/RTSP/SDP input
.br

.br
This filter handles SDP/RTSP/RTP input reading. It supports:
.br
- SDP file reading
.br
- RTP direct url through rtp:// protocol scheme
.br
- RTSP session processing through rtsp:// and satip:// protocol schemes
.br
 
.br
The filter produces either media PIDs and compressed media frames, or file PIDs and multiplex data (e.g., MPEG-2 TS).
.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content (SDP, RTP or RTSP URL)
.br
firstport (uint, default: 0):  default first port number to use. 0 lets the filter decide
.br
ifce (str):                    default interface IP to use for multicast. If NULL, the default system interface will be used
.br
ttl (uint, default: 127, minmax: 0-127): multicast TTL
.br
reorder_len (uint, default: 1000): reorder length in packets
.br
reorder_delay (uint, default: 50): max delay in RTP reorderer, packets will be dispatched after that
.br
block_size (uint, default: 0x200000): buffer size fur RTP/UDP or RTSP when interleaved
.br
disable_rtcp (bool, default: false): disable RTCP reporting
.br
nat_keepalive (uint, default: 0): delay in ms of NAT keepalive, disabled by default (except for SatIP, set to 30s by default)
.br
force_mcast (str):             force multicast on indicated IP in RTSP setup
.br
use_client_ports (bool, default: false): force using client ports  (hack for some RTSP servers overriding client ports)
.br
bandwidth (uint, default: 0):  set bandwidth param for RTSP requests
.br
default_port (uint, default: 554, minmax: 0-65535): set default RTSP port
.br
satip_port (uint, default: 1400, minmax: 0-65535): set default port for SATIP
.br
interleave (bool, default: false): set RTP over RTSP
.br
udp_timeout (uint, default: 10000): default timeout before considering UDP is down
.br
rtsp_timeout (uint, default: 3000): default timeout before considering RTSP is down
.br
rtcp_timeout (uint, default: 5000): default timeout for RTCP trafic in ms. After this timeout, playback will start unsync. If 0 always wait for RTCP
.br
autortsp (bool, default: true): automatically reconfig RTSP interleaving if UDP timeout
.br
first_packet_drop (uint, default: 0): set number of first RTP packet to drop - 0 if no drop
.br
frequency_drop (uint, default: 0): drop 1 out of N packet - 0 disable droping
.br
user_agent (str, default: $GUA): user agent string, by default solved from GPAC preferences
.br
languages (str, default: $GLANG): user languages, by default solved from GPAC preferences
.br
stats (uint, default: 500):    update statistics to the user every given MS, 0 disables reporting
.br
max_sleep (sint, default: 1000): set max sleep in milliseconds. A negative value -N means to always sleep for N ms, a positive value N means to sleep at most N ms but will sleep less if frame duration is shorter
.br
rtcpsync (bool, default: true): use RTCP to adjust synchronization
.br

.br
.SH fout
.LP
.br
Description: File output
.br

.br
The file output filter is used to write output to disk, and does not produce any output PID.
.br
It can work as a null sink when its destination is null, dropping all input packets. In this case it accepts ANY type of input pid, not just file ones.
.br
In regular mode, the filter only accept pid of type file. It will dump to file incomming packets (stream type file), starting a new file for each packet having a frame_start flag set, unless operating in .I cat mode.
.br
The ouput file name can use gpac templating mechanism, see gpac -h doc.The filter watches the property FileNumber on incoming packets to create new files.
.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file - see filter help 
.br
append (bool, default: false): open in append mode
.br
dynext (bool, default: false): indicate the file extension is set by filter chain, not dst
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
speed (dbl, default: 1.0):     set playback speed when vsync is on. If speed is negative and start is 0, start is set to -1
.br
ext (cstr):                    set extension for graph resolution, regardless of file extension
.br
mime (cstr):                   set mime type for graph resolution
.br
cat (bool, default: false):    cat each file of input pid rather than creating one file per filename
.br
ow (bool, default: true):      overwrite output if existing
.br
mvbk (uint, default: 8192):    block size used when moving parts of the file around in patch mode
.br
redund (bool, default: false): keep redundant packet in output file
.br

.br
.SH uflatm
.LP
.br
Description: Raw AAC to LATM writer
.br

.br
This filter converts AAC streams into LATM encapsulated data.
.br

.br
.SH Options (expert):
.LP
.br
fdsi (frac, default: 0):       set delay between two LATM Audio Config
.br

.br
.SH ufadts
.LP
.br
Description: ADTS writer
.br

.br
This filter converts AAC streams into ADTS encapsulated data.
.br

.br
.SH Options (expert):
.LP
.br
mpeg2 (enum, default: auto):   signal as MPEG2 AAC
.br
* auto: selects based on AAC profile
.br
* no: always signals as MPEG-4 AAC
.br
* yes: always signals as MPEG-2 AAC
.br

.br

.br
.SH reframer
.LP
.br
Description: Media Reframer
.br

.br
This filter provides various compressed domain tools on inputs:
.br
- ensure reframing
.br
- optionally force decoding
.br
- real-time regulation
.br
- packet filtering based on SAP types or frame numbers
.br
- time-range extraction and spliting
.br
This filter forces input pids to be properly framed (1 packet = 1 Access Unit).
.br
It is typcially needed to force remultiplexing in file to file operations when source and destination files use the same format.
.br
  
.br
.SH SAP filtering
.LP
.br
The filter can remove packets based on their SAP types using .I saps option.
.br
For example, this can be used to extract only the key frame (SAP 1,2,3) of a video to create a trick mode version.
.br
  
.br
.SH Frame filtering
.LP
.br
This filter can keep only specific Access Units of the source using .I frames option.
.br
For example, this can be used to extract only specific key frame of a video to create a HEIF collection.
.br
  
.br
.SH Frame decoding
.LP
.br
This filter can force input media streams to be decoded using the .I raw option.
.br
Example
.br
gpac src=m.mp4 reframer:raw @ [dst]
.br

.br
.SH Real-time Regulation
.LP
.br
The filter can perform real-time regulation of input packets, based on their timescale and timestamps.
.br
For example to simulate a live DASH:
.br
Example
.br
gpac src=m.mp4 reframer:rt=on @ dst=live.mpd:dynamic
.br

.br
  
.br
.SH Range extraction
.LP
.br
The filter can perform time range extraction of the source using .I xs and .I xe options.
.br
The formats allowed for times specifiers are:
.br
* 'T'H:M:S: specify time in hours, minutes, seconds
.br
* 'T'H:M:S.MS: specify time in hours, minutes, seconds and milliseconds
.br
* INT: specify time in millisecond
.br
* NUM/DEN: specify time in seconds as fraction
.br
* FNUM: specify time as frame number
.br
In this mode, the timestamps are rewritten to form a continuous timeline.
.br
When multiple ranges are given, the filter will try to seek if supported by source.
.br
Example
.br
gpac src=m.mp4 reframer:xs=T00:00:10,T00:01:10,T00:02:00:xs=T00:00:20,T00:01:20 [dst]
.br

.br
This will extract the time ranges [10s,20s], [1m10s,1m20s] and all media starting from 2m
.br

.br
It is possible to signal range boundaries in output packets using .I splitrange.
.br
This will expose on the first packet of each range in each pid the following properties:
.br
* FileNumber: starting at 1 for the first range, to be used as replacement for $num$ in templates
.br
* FileSuffix: corresponding to StartRange_EndRange or StartRange for open ranges, to be used as replacement for $FS$ in templates
.br

.br
Example
.br
gpac src=m.mp4 reframer:xs=T00:00:10,T00:01:10:xe=T00:00:20:splitrange -o dump_$FS$.264
.br

.br
This will create two output files dump_T00.00.10_T00.02.00.264 and dump_T00.01.10.264.
.br
Note: The : and / characters are replaced by . in FileSuffix property.
.br

.br
.SH Other split actions
.LP
.br
The filter can perform splitting of the source using .I xs option.
.br
The additional formats allowed for .I xs option are:
.br
* 'SAP': split source at each SAP/RAP
.br
* 'D'VAL: split source by chunks of VAL ms
.br
* 'D'NUM/DEN: split source by chunks of NUM/DEN seconds
.br
* 'S'VAL: split source by chunks of estimated size VAL bytes, VAL can use property multipliers
.br

.br
Note: In these modes, .I splitrange and .I xadjust are implicitly set.
.br

.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br
rt (enum, default: off):       real-time regulation mode of input
.br
* off: disables real-time regulation
.br
* on: enables real-time regulation, one clock per pid
.br
* sync: enables real-time regulation one clock for all pids
.br

.br
saps (uintl, minmax: 0|1|2|3|4): drop non-SAP packets, off by default. The list gives the SAP types (0,1,2,3,4) to forward. Note that forwarding only sap 0 will break the decoding
.br

.br
refs (bool, default: false):   forward only frames used as reference frames, if indicated in the input stream
.br
speed (dbl, default: 1.0):     speed for real-time regulation mode - only positive value
.br
raw (bool, default: false):    force input streams to be in raw format (i.e. forces decoding of input)
.br
frames (uintl):                drop all except listed frames (first being 1), off by default
.br
xs (strl):                     extraction start time(s), see filter help
.br
xe (strl):                     extraction end time(s). If less values than start times, the last time interval extracted is an open range
.br
xround (enum, default: before): adjustment of extraction start range I-frame
.br
* before: use first I-frame preceeding or equal to start range
.br
* after: use first I-frame (if any) following or equal to start range
.br
* closest: use I-frame closest to start range
.br

.br
xadjust (bool, default: false): adjust end time of extraction range to be before next I-frame
.br
nosap (bool, default: false):  do not cut at SAP when extracting range (may result in broken streams)
.br
splitrange (bool, default: false): signal file boundary at each extraction first packet for template-base file generation
.br
seeksafe (dbl, default: 10.0): rewind play requests by given seconds (to make sur I-frame preceeding start is catched)
.br

.br
.SH writegen
.LP
.br
Description: Stream to file
.br

.br
Generic single stream to file converter, used when extracting/converting PIDs.
.br
The writegen filter should usually not be explicetly loaded without a source ID specified, since the filter would likely match any pid connection.
.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br
pfmt (pfmt, default: none, minmax: none,yuv420,yuv420_10,yuv422,yuv422_10,yuv444,yuv444_10,uyvy,vyuy,yuyv,yvyu,nv12,nv21,nv1l,nv2l,yuva,yuvd,yuv444a,grey,algr,gral,rgb4,rgb5,rgb6,rgba,argb,bgra,abgr,rgb,bgr,xrgb,rgbx,xbgr,bgrx,rgbd,rgbds,rgbs,rgbas): pixel format for raw extract. If not set, derived from extension
.br
afmt (afmt, default: none, minmax: none,u8,s16,s24,s32,flt,dbl,u8p,s16p,s24p,s32p,fltp,dblp): audio format for raw extract. If not set, derived from extension
.br
decinfo (enum, default: auto): decoder config insert mode
.br
* no: never inserted
.br
* first: inserted on first packet
.br
* sap: inserted at each SAP
.br
* auto: selects between no and first based on media type
.br

.br
split (bool, default: false):  force one file per decoded frame
.br
frame (bool, default: false):  force single frame dump with no rewrite. In this mode, all codecids are supported
.br
sstart (uint, default: 0):     start number of frame to forward. If 0, all samples are forwarded
.br
send (uint, default: 0):       end number of frame to forward. If less than start frame, all samples after start are forwarded
.br
dur (frac, default: 0):        duration of media to forward after first sample. If 0, all samples are forwarded
.br

.br
.SH ufnalu
.LP
.br
Description: AVC/HEVC to AnnexB writer
.br

.br
This filter converts AVC|H264 and HEVC streams into AnnexB format, with inband parameter sets and start codes.
.br

.br
.SH Options (expert):
.LP
.br
rcfg (bool, default: true):    force repeating decoder config at each I-frame
.br
extract (enum, default: all):  layer extraction mode
.br
* full: extracts all layers
.br
* base: extract base layer only
.br
* layer: extract non-base layer(s) only
.br

.br
delim (bool, default: true):   insert AU Delimiter NAL
.br

.br
.SH writeqcp
.LP
.br
Description: QCP writer
.br

.br
This filter converts a single stream to a QCP output file.
.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br

.br
.SH writevtt
.LP
.br
Description: WebVTT writer
.br

.br
This filter converts a single stream to a WebVTT output file.
.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br
merge (bool, default: false):  merge VTT cue if needed
.br

.br
.SH nhntw
.LP
.br
Description: NHNT writer
.br

.br
This filter converts a single stream to an NHNT output file.
.br
NHNT documentation is available at https://wiki.gpac.io/NHNT-Format
.br

.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br
large (bool, default: false):  use large file mode
.br

.br
.SH nhmlw
.LP
.br
Description: NHML writer
.br

.br
This filter converts a single stream to an NHML output file.
.br
NHML documentation is available at https://wiki.gpac.io/NHML-Format
.br

.br

.br
.SH Options (expert):
.LP
.br
exporter (bool, default: false): compatibility with old exporter, displays export results
.br
dims (bool, default: false):   use DIMS mode
.br
name (str):                    set output name of files produced (needed media/info files refered to from XML
.br
nhmlonly (bool, default: false): only dump NHML info, not media
.br
pckp (bool, default: false):   full NHML dump
.br
chksum (enum, default: none):  insert frame checksum
.br
* none: no checksum
.br
* crc: CRC32 checksum
.br
* sha1: SHA1 checksum
.br

.br

.br
.SH vobsubdmx
.LP
.br
Description: VobSub demuxer
.br

.br
This filter demultiplexes VobSub files/data to produce media PIDs and frames.
.br

.br
.SH Options (expert):
.LP
.br
blankframe (bool, default: true): force inserting a blank frame if first subpic is not at 0
.br

.br
.SH avimx
.LP
.br
Description: AVI muxer
.br

.br
This filter multiplexes raw or compressed audio and video to produce an AVI output.
.br

.br
Unlike other multiplexing filters in GPAC, this filter is a sink filter and does not produce any PID to be redirected in the graph.
.br
The filter can however use template names for its output, using the first input PID to resolve the final name.
.br
The filter watches the property FileNumber on incoming packets to create new files.
.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file
.br
fps (frac, default: 25/1):     default framerate if none indicated in stream
.br
noraw (bool, default: false):  disable raw output in AVI, only compressed ones allowed
.br
opendml_size (luint, default: 0): force opendml format when chunks are larger than this amount (0 means 1.9Gb max size in each riff chunk)
.br

.br
.SH aout
.LP
.br
Description: Audio output
.br

.br
This filter outputs a single uncompressed audio PID to a soundcard.
.br

.br
.SH Options (expert):
.LP
.br
drv (cstr):                    audio driver name
.br
bnum (uint, default: 2):       number of audio buffers - 0 for auto
.br
bdur (uint, default: 100):     total duration of all buffers in ms - 0 for auto. The longer the audio buffer is, the longer the audio latency will be (pause/resume). The quality of fast forward audio playback will also be degradated when using large audio buffers
.br
threaded (bool, default: true): force dedicated thread creation if sound card driver is not threaded
.br
dur (frac, default: 0):        only play the specified duration
.br
clock (bool, default: true):   hint audio clock for this stream (reports system time and CTS), for other filters to use
.br
speed (dbl, default: 1.0):     set playback speed. If speed is negative and start is 0, start is set to -1
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
vol (uint, default: 100, minmax: 0-100, updatable): set default audio volume, as a percentage between 0 and 100
.br
pan (uint, default: 50, minmax: 0-100, updatable): set stereo pan, as a percentage between 0 and 100, 50 being centered
.br
buffer (uint, default: 200):   set buffer in ms
.br
adelay (frac, default: 0, updatable): set audio delay in sec
.br

.br
.SH ufm4v
.LP
.br
Description: M4V writer
.br

.br
This filter converts MPEG-4 part 2 visual streams into dumpable format (reinsert decoder config).
.br

.br
.SH Options (expert):
.LP
.br
rcfg (bool, default: true):    force repeating decoder config at each I-frame
.br

.br
.SH resample
.LP
.br
Description: Audio resampler
.br

.br
This filter resamples raw audio to a target sample rate, number of channels or audio format.
.br

.br
.SH Options (expert):
.LP
.br
ch (uint, default: 0):         desired number of output audio channels - 0 for auto
.br
sr (uint, default: 0):         desired sample rate of output audio - 0 for auto
.br
fmt (afmt, default: none):     desired format of output audio - none for auto
.br

.br
.SH vout
.LP
.br
Description: Video output
.br

.br
This filter displays a single visual pid in a window.
.br
The window is created unless a window handle (HWND, xWindow, etc) is indicated in the config file ( [Temp]OSWnd=ptr).
.br
The output uses GPAC video output module indicated in .I drv option or in the config file (see GPAC core help).
.br
The video output module can be further configured (see GPAC core help).
.br
The filter can use openGL or 2D blitter of the graphics card, depending on the OS support.
.br
The filter can be used do dump frames as written on the grapics card.
.br
In this case, the window is not visible and only the listed frames are drawn to the GPU.
.br
The pixel format of the dumped frame is always RGB in OpenGL and matches the video backbuffer format in 2D mode.
.br

.br

.br
.SH Options (expert):
.LP
.br
drv (cstr):                    video driver name
.br
vsync (bool, default: true):   enable video screen sync
.br
drop (bool, default: false):   enable droping late frames
.br
disp (enum, default: gl):      display mode
.br
* gl: OpenGL
.br
* pbo: OpenGL with PBO
.br
* blit: 2D hardware blit
.br
* soft: software blit
.br

.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
dur (lfrac, default: 0):       only play the specified duration
.br
speed (dbl, default: 1.0):     set playback speed when vsync is on. If speed is negative and start is 0, start is set to -1
.br
hold (dbl, default: 1.0):      number of seconds to hold display for single-frame streams. A negative value force a hold on last frame for single or multi-frames streams
.br
linear (bool, default: false): use linear filtering instead of nearest pixel for GL mode
.br
back (uint, default: 0x808080): back color for transparent images
.br
wsize (v2di, default: -1x-1):  default init window size. 0x0 holds the window size of the first frame. Negative values indicate video media size
.br
wpos (v2di, default: -1x-1):   default position (0,0 top-left)
.br
vdelay (frac, default: 0, updatable): set delay in sec, positive value displays after audio clock
.br
hide (bool, default: false):   hide output window
.br
fullscreen (bool, default: false): use fullcreen
.br
buffer (uint, default: 100):   set buffer in ms
.br
dumpframes (uintl):            ordered list of frames to dump, 1 being first frame - see filter help. Special value 0 means dump all frames
.br
out (str, default: dump):      radical of dump frame filenames. If no extension is provided, frames are exported as $OUT_%d.PFMT
.br

.br
.SH vcrop
.LP
.br
Description: Video crop
.br

.br
This filter is used to crop raw video data.
.br

.br
.SH Options (expert):
.LP
.br
wnd (str):                     size of output to crop, indicated as TxLxWxH. If % is indicated after a number, the value is in percent of the source width (for L and W) or height (for T and H). An absolute offset (+x, -x) can be added after percent
.br
copy (bool, default: false):   copy the source pixels. By default the filter will try to forward crop frames by adjusting offsets and strides of the source if possible (window contained in frame)
.br
round (enum, default: up):     adjust dimension to be a multiple of 2
.br
* up: up rounding
.br
* down: down rounding
.br
* allup: up rounding on formats that do not require it (RGB, YUV444)
.br
* alldown: down rounding on formats that do not require it (RGB, YUV444)
.br

.br

.br
.SH vflip
.LP
.br
Description: Video flip
.br

.br
Filter used to flip video frames vertically, horizontally, in both directions or no flip
.br

.br
.SH Options (expert):
.LP
.br
mode (enum, default: vert, updatable): flip mode
.br
* off: no flipping (passthrough)
.br
* vert: vertical flip
.br
* horiz: horizontal flip
.br
* both: horizontal and vertical flip
.br

.br

.br
.SH rfrawvid
.LP
.br
Description: RAW video reframer
.br

.br
This filter parses raw YUV and RGB files/data and outputs corresponding raw video PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
size (v2di, default: 0x0):     source video resolution
.br
spfmt (pfmt, default: none, minmax: none,yuv420,yuv420_10,yuv422,yuv422_10,yuv444,yuv444_10,uyvy,vyuy,yuyv,yvyu,nv12,nv21,nv1l,nv2l,yuva,yuvd,yuv444a,grey,algr,gral,rgb4,rgb5,rgb6,rgba,argb,bgra,abgr,rgb,bgr,xrgb,rgbx,xbgr,bgrx,rgbd,rgbds,rgbs,rgbas): source pixel format. When not set, derived from file extension
.br
fps (frac, default: 25/1):     number of frames per second
.br
copy (bool, default: false):   copy source bytes into output frame. If not set, source bytes are referenced only
.br

.br
.SH rfpcm
.LP
.br
Description: PCM reframer
.br

.br
This filter parses raw PCM file/data and outputs corresponding raw audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
sr (uint, default: 44100):     sample rate
.br
safmt (afmt, default: none, minmax: none,u8,s16,s24,s32,flt,dbl,u8p,s16p,s24p,s32p,fltp,dblp): audio format
.br
ch (uint, default: 2):         number of channels
.br
framelen (uint, default: 1024): number of samples to put in one audio frame. For planar formats, indicate plane size in samples
.br

.br
.SH jpgenc
.LP
.br
Description: JPG encoder
.br

.br
This filter encodes a single uncompressed video PID to JPEG using libjpeg.
.br

.br
.SH Options (expert):
.LP
.br
dctmode (enum, default: fast): type of DCT used
.br
* slow: precise but slow integer DCT
.br
* fast: less precise but faster integer DCT
.br
* float: float DCT
.br

.br
quality (uint, default: 100, minmax: 0-100, updatable): compression quality
.br

.br
.SH pngenc
.LP
.br
Description: PNG encoder
.br

.br
This filter encodes a single uncompressed video PID to PNG using libpng.
.br

.br
No options
.br

.br
.SH rewind
.LP
.br
Description: Audio/Video rewinder
.br

.br
This filter reverses audio and video frames in negative playback speed.
.br
The filter is in passthrough if speed is positive. Otherwise, it reverts decoded GOPs for video, or revert samples in decoded frame for audio (not really nice for most codecs).
.br

.br
.SH Options (expert):
.LP
.br
rbuffer (uint, default: 100):  size of video rewind buffer in frames. If more frames than this, flush is performed
.br

.br
.SH flist
.LP
.br
Description: Sources concatenator
.br

.br
This filter can be used to play playlist files or a list of sources.
.br

.br
The filter loads any source supported by GPAC: remote or local files or streaming sessions (TS, RTP, DASH or other).
.br
The filter forces input demultiplex and recomputes the input timestamps into a continuous timeline.
.br
At each new source, the filter tries to remap input PIDs to already declared output PIDs of the same type, if any, or declares new output PIDs otherwise. If no input PID matches the type of an output, no packets are send for that PID.
.br

.br
.SH Source list mode
.LP
.br
The source list mode is activated by using flist:srcs=f1[,f2], where f1 can be a file or a directory to enum.
.br
The syntax for directory enum is:
.br
* dir/*: enumerates everything in dir
.br
* foo/*.png: enumerates all files with extension png in foo
.br
* foo/*.png;*.jpg: enumerates all files with extension png or jpg in foo
.br

.br
The resulting file list can be sorted using .I fsort.
.br
If the sort mode is datex and source files are images or single frame files, the following applies:
.br
- options .I floop, .I revert and .I dur are ignored
.br
- the files are sorted by modification time
.br
- the first frame is assigned a timestamp of 0
.br
- each frame (coming from each file) is assigned a duration equal to the difference of modification time between the file and the next file
.br
- the last frame is assigned the same duration as the previous one
.br

.br
.SH Playlist mode
.LP
.br
The playlist mode is activated when opening a playlist file (extension txt or m3u).
.br
In this mode, directives can be given in a comment line, i.e. a line starting with '#' before the line with the file name.
.br
The following directives, separated with space or comma, are supported:
.br
* repeat=N: repeats N times the content (hence played N+1).
.br
* start=T: tries to play the file from start time T seconds (double format only). This may not work with some files/formats not supporting seeking.
.br
* stop=T: stops source playback after T seconds (double format only). This works on any source (implemented independently from seek support).
.br
* cat: specifies that the following entry should be concatenated to the previous source rather than opening a new source. This can optionnally specify a byte range if desired, otherwise the full file is concatenated.
.br
* srange=T: when cat is set, indicates the start T (64 bit decimal, default 0) of the byte range from the next entry to concatenate.
.br
* send=T: when cat is set, indicates the end T (64 bit decimal, default 0) of the byte range from the next entry to concatenate.
.br

.br
Note: When sources are ISOBMFF files or segments on local storage or GF_FileIO objects, the concatenation will be automatically detected.
.br

.br
The source lines follow the usual source syntax, see gpac -h.
.br
Additional pid properties can be added per source (see gpac -h doc), but are valid only for the current source, and reset at next source.
.br

.br
The URL given can either be a single URL, or a list of URLs separated by " && " to load several sources for the active entry.
.br
Example
.br
audio.mp4 && video.mp4
.br

.br

.br
The playlist file is refreshed whenever the next source has to be reloaded in order to allow for dynamic pushing of sources in the playlist.
.br
If the last URL played cannot be found in the playlist, the first URL in the playlist file will be loaded.
.br

.br

.br
.SH Options (expert):
.LP
.br
floop (sint, default: 0):      loop playlist/list of files, 0 for one time, n for n+1 times, -1 for indefinitely
.br
srcs (strl):                   list of files to play - see filter help
.br
fdur (frac, default: 1/25):    for source files with a single frame, sets frame duration. 0/NaN fraction means reuse source timing which is usually not set!
.br
revert (bool, default: false): revert list of files (not playlist)
.br
timescale (uint, default: 0):  force output timescale on all pids. 0 uses the timescale of the first pid found
.br
ka (uint, default: 0):         keep playlist alive (disable loop), waiting the for a new input to be added or #end to end playlist. The value specify the refresh rate in ms
.br
fsort (enum, default: no):     sort list of files
.br
* no: no sorting, use default directory enumeration of OS
.br
* name: sort by alphabetical name
.br
* size: sort by increasing size
.br
* date: sort by increasing modification time
.br
* datex: sort by increasing modification time - see filter help
.br

.br

.br
.SH m2tsmx
.LP
.br
Description: MPEG-2 TS muxer
.br

.br
GPAC TS multiplexer selects M2TS PID for media streams using the PID of the PMT plus the stream index.
.br
For example, default config creates the first program with a PMT PID 100, the first stream will have a PID of 101.
.br
Streams are grouped in programs based on input PID property ServiceID if present. If absent, stream will go in the program with service ID as indicated by .I sid option.
.br
- .I name option is overridden by input PID property ServiceName.
.br
- .I provider option is overridden by input PID property ServiceProvider.
.br
- .I pcr_offset option is overridden by input PID property "tsmux:pcr_offset"
.br
- .I first_pts option is overridden by input PID property "tsmux:force_pts"
.br
- .I temi option is overridden by input PID property "tsmux:temi"
.br

.br
.SH Time and External Media Information (TEMI)
.LP
.br
The .I temi option allows specifying a list of URLs or timeline IDs to insert in streams of a program.
.br
One or more TEMI timeline can be specified per PID.
.br
The syntax is a comma-separated list of one or more TEMI description.
.br
Each TEMI description is formatted as ID_OR_URL or #OPT1[#OPT2]#ID_OR_URL. Options are:
.br
* S`N`: gives number N indicating the target serviceID
.br
* T`N`: set timescale to use (default: PID timescale)
.br
* D`N`: set delay in ms between two TEMI url descriptors (default 1000)
.br
* O`N`: set offset (max 64 bits) to add to TEMI timecodes (default 0). If timescale is not specified, offset value is in ms, otherwise in timescale units.
.br
* I`N`: set initial value (max 64 bits) of TEMI timecodes. If not set, initial value will match first packet CTS. If timescale is not specified, value is in PID timescale units, otherwise in specified timescale units.
.br
* P`N`: indicate target PID in program. Possible values are
.br
  * `V`: only insert for video streams.
.br
  * `A`: only insert for audio streams.
.br
  * `T`: only insert for text streams.
.br
  * N: only insert for stream with index N (0-based) in the program.
.br
* L`N`: set 64bit timecode signaling. Possible values are:
.br
  * `A`: automatic switch between 32 and 64 bit depending on timecode value (default if not specified).
.br
  * `Y`: use 64 bit signaling only.
.br
  * `N`: use 32 bit signaling only and wrap around timecode value.
.br
* N: insert NTP timestamp in TEMI timeline descriptor
.br
* ID_OR_URL: If number, indicates the TEMI ID to use for external timeline. Otherwise, gives the URL to insert
.br
  
.br
Example
.br
temi="url"
.br

.br
Inserts a TEMI URL+timecode in the each stream of each program.
.br
Example
.br
temi="#P0#url,#P1#4"
.br

.br
Inserts a TEMI URL+timecode in the first stream of all programs and an external TEMI with ID 4 in the second stream of all programs.
.br
Example
.br
temi="#P0#2,#P0#url,#P1#4"
.br

.br
Inserts a TEMI with ID 2 and a TEMI URL+timecode in the first stream of all programs, and an external TEMI with ID 4 in the second stream of all programs.
.br
Example
.br
temi="#S20#4,#S10#URL"
.br

.br
Inserts an external TEMI with ID 4 in the each stream of program with ServiceID 20 and a TEMI URL in each stream of program with ServiceID 10.
.br
Example
.br
temi="#N#D500#PV#T30000#4"
.br

.br
Inserts an external TEMI with ID 4 and timescale 30000, NTP injection and carousel of 500 ms in the video stream of all programs.
.br

.br
Warning: multipliers (k,m,g) are not supported in TEMI options.
.br
.SH Notes
.LP
.br
In DASH mode, the PCR is always initialized at 0, and .I flush_rap is automatically set.
.br
The filter watches the property FileNumber on incoming packets to create new files or new segments in DASH mode.
.br

.br

.br
.SH Options (expert):
.LP
.br
breq (uint, default: 100):     buffer requirements in ms for input pids
.br
pmt_id (uint, default: 100):   define the ID of the first PMT to use in the mux
.br
rate (uint, default: 0):       target rate in bps of the multiplex. If not set, variable rate is used
.br
pmt_rate (uint, default: 200): interval between PMT in ms
.br
pat_rate (uint, default: 200): interval between PAT in ms
.br
first_pts (luint, default: 0): force PTS value of first packet, in 90kHz
.br
pcr_offset (luint, default: -1): offset all timestamps from PCR by V, in 90kHz. Default value is computed based on input media
.br
mpeg4 (enum, default: none):   force usage of MPEG-4 signaling (IOD and SL Config)
.br
* none: disables 4on2
.br
* full: sends AUs as SL packets over section for OD, section/pes for scene (cf bifs_pes)
.br
* scene: sends only scene streams as 4on2 but uses regular PES without SL for audio and video
.br

.br
pmt_version (uint, default: 200): set version number of the PMT
.br
disc (bool, default: false):   set the discontinuity marker for the first packet of each stream
.br
repeat_rate (uint, default: 0): interval in ms between two carousel send for MPEG-4 systems. Is overridden by carousel duration PID property if defined
.br
repeat_img (uint, default: 0): interval in ms between re-sending (as PES) of single-image streams. If 0, image data is sent once only
.br
max_pcr (uint, default: 100):  set max interval in ms between 2 PCR
.br
nb_pack (uint, default: 4):    pack N TS packets in output packets
.br
pes_pack (enum, default: audio): set AU to PES packing mode
.br
* audio: will pack only multiple audio AUs in a PES
.br
* none: make exactly one AU per PES
.br
* all: will pack multiple AUs per PES for all streams
.br

.br
realtime (bool, default: false): use real-time output
.br
bifs_pes (enum, default: off): select BIFS streams packetization (PES vs sections)
.br
* on: uses BIFS PES
.br
* off: uses BIFS sections
.br
* copy: uses BIFS PES but removes timestamps in BIFS SL and only carries PES timestamps
.br

.br
flush_rap (bool, default: false): force flushing mux program when RAP is found on video, and injects PAT and PMT before the next video PES begin
.br
pcr_only (bool, default: false): enable PCR-only TS packets
.br
pcr_init (lsint, default: -1): set initial PCR value for the programs. Negative value implies random value is picked
.br
sid (uint, default: 0):        set service ID for the program - see filter help
.br
name (str):                    set service name for the program - see filter help
.br
provider (str):                set service provider name for the program - see filter help
.br
sdt_rate (uint, default: 0):   interval in ms between two DVB SDT tables. If 0, SDT is disabled
.br
temi (str):                    insert TEMI time codes in adaptation field - see filter help
.br
log_freq (uint, default: 500): delay between logs for realtime mux
.br
latm (bool, default: false):   use LATM AAC encapsulation instead of regular ADTS
.br
subs_sidx (sint, default: -1): number of subsegments per sidx. negative value disables sidx
.br

.br
.SH dasher
.LP
.br
Description: DASH and HLS segmenter
.br

.br
.SH GPAC DASH and HLS segmenter
.LP
.br
This filter provides segmentation and manifest generation for MPEG-DASH and HLS formats.
.br
The segmenter currently supports:
.br
- MPD and m3u8 generation (potentially in parallel)
.br
- ISOBMFF, MPEG-2 TS, MKV and raw bitstream segment formats
.br
- override of profiles and levels in manifest for codecs
.br
- most MPEG-DASH profiles
.br
- static and dynamic (live) manifest offering
.br
- context store and reload for batch processing of live/dynamic sessions
.br

.br
The filter does perform per-segment real-time regulation using .I sreg.
.br
If you need per-frame real-time regulation on non-real-time inputs, insert a reframer before to perform real-time regulation.
.br
Example
.br
src=file.mp4 reframer:rt=on @ -o live.mpd:dmode=dynamic
.br

.br
.P
.B
Template strings
.br
The segmenter uses templates to derive output file names, regardless of the DASH mode (even when templates are not used). The default one is $File$_dash for ondemand and single file modes, and $File$_$Number$ for separate segment files
.br
Example
.br
template=Great_$File$_$Width$_$Number$
.br

.br
If input is foo.mp4 with 640x360 video, this will resolve in Great_foo_640_$Number$ for the DASH template.
.br
Example
.br
template=Great_$File$_$Width$
.br

.br
If input is foo.mp4 with 640x360 video, this will resolve in Great_foo_640.mp4 for onDemand case.
.br

.br
Standard DASH replacement strings: 
.br
* $Number[%%0Nd]$: replaced by the segment number, possibly prefixed with 0
.br
* $RepresentationID$: replaced by representation name
.br
* $Time$: replaced by segment start time
.br
* $Bandwidth$: replaced by representation bandwidth.
.br
Note: these strings are not replaced in the manifest templates elements.
.br

.br
Additional replacement strings (not DASH, not generic GPAC replacements but may occur multiple times in template):
.br
* $Init=NAME$: replaced by NAME for init segment, ignored otherwise
.br
* $XInit=NAME$: complete replace by NAME for init segment, ignored otherwise
.br
* $Index=NAME$: replaced by NAME for index segments, ignored otherwise
.br
* $Path=PATH$: replaced by PATH when creating segments, ignored otherwise
.br
* $Segment=NAME$: replaced by NAME for media segments, ignored for init segments
.br
* $FS$ (FileSuffix): replaced by _trackN in case the input is an AV multiplex, or kept empty otherwise
.br
Note: these strings are replaced in the manifest templates elements.
.br

.br
.P
.B
PID assignment and configuration
.br
To assign PIDs into periods and adaptation sets and configure the session, the segmenter looks for the following properties on each input pid:
.br
* Representation: assigns representation ID to input pid. If not set, the default behaviour is to have each media component in different adaptation sets. Setting the RepresentationID allows explicit multiplexing of the source(s)
.br
* Period: assigns period ID to input pid. If not set, the default behaviour is to have all media in the same period with the same start time
.br
* PStart: assigns period start. If not set, 0 is assumed, and periods appear in the Period ID declaration order. If negative, this gives the period order (-1 first, then -2 ...). If positive, this gives the true start time and will abort DASHing at period end
.br
Note: When both positive and negative values are found, the by-order periods (negative) will be inserted AFTER the timed period (positive)
.br
* ASID: assigns parent adaptation set ID. If not 0, only sources with same AS ID will be in the same adaptation set
.br
Note: If multiple streams in source, only the first stream will have an AS ID assigned
.br
* xlink: for remote periods, only checked for null pid
.br
* Role, PDesc, ASDesc, ASCDesc, RDesc: various descriptors to set for period, AS or representation
.br
* BUrl: overrides segmenter [-base] with a set of BaseURLs to use for the pid (per representation)
.br
* Template: overrides segmenter .I template for this PID
.br
* DashDur: overrides segmenter segment duration for this PID
.br
* StartNumber: sets the start number for the first segment in the PID, default is 1
.br
* Non-dash properties: Bitrate, SAR, Language, Width, Height, SampleRate, NumChannels, Language, ID, DependencyID, FPS, Interlaced, Codec. These properties are used to setup each representation and can be overridden on input PIDs using the general PID property settings (cf global help).
.br
  
.br
Example
.br
src=test.mp4:#Bitrate=1M dst=test.mpd
.br

.br
This will force declaring a bitrate of 1M for the representation, regardless of actual input bitrate.
.br
Example
.br
src=muxav.mp4 dst=test.mpd
.br

.br
This will create unmuxed DASH segments.
.br
Example
.br
src=muxav.mp4:#Representation=1 dst=test.mpd
.br

.br
This will create muxed DASH segments.
.br
Example
.br
src=m1.mp4 src=m2.mp4:#Period=Yep dst=test.mpd
.br

.br
This will put src m1.mp4 in first period, m2.mp4 in second period.
.br
Example
.br
src=m1.mp4:#BUrl=http://foo/bar dst=test.mpd
.br

.br
This will assign a baseURL to src m1.mp4.
.br
Example
.br
src=m1.mp4:#ASCDesc=<ElemName val="attval">text</ElemName> dst=test.mpd
.br

.br
This will assign the specified XML descriptor to the adaptation set.
.br
Note:  this can be used to inject most DASH descriptors not natively handled by the segmenter.
.br
The segmenter handles the XML descriptor as a string and does not attempt to validate it. Descriptors, as well as some segmenter filter arguments, are string lists (comma-separated by default), so that multiple descriptors can be added:
.br
Example
.br
src=m1.mp4:#RDesc=<Elem attribute="1"/>,<Elem2>text</Elem2> dst=test.mpd
.br

.br
This will insert two descriptors in the representation(s) of m1.mp4.
.br
Example
.br
src=video.mp4:#Template=foo$Number$ src=audio.mp4:#Template=bar$Number$ dst=test.mpd
.br

.br
This will assign different templates to the audio and video sources.
.br
Example
.br
src=null:#xlink=http://foo/bar.xml:#PDur=4 src=m.mp4:#PStart=-1
.br

.br
This will insert an create an MPD with first a remote period then a regular one.
.br
Example
.br
src=null:#xlink=http://foo/bar.xml:#PStart=6 src=m.mp4
.br

.br
This will create an MPD with first a regular period, dashing ony 6s of content, then a remote one.
.br

.br
The segmenter will create muxing filter chains for each representation and will reassign PID IDs so that each media component (video, audio, ...) in an adaptation set has the same ID.
.br

.br
For HLS, the output pid will deliver the master playlist and the variant playlists.
.br
The default variant playlist are $NAME_$N.m3u8, where $NAME is the radical of the output file name and $N is the 1-based index of the variant.
.br

.br
.P
.B
Segmentation
.br
The default behavior of the segmenter is to estimate the theoretical start time of each segment based on target segment duration, and start a new segment when a packet with SAP type 1,2,3 or 4 with time greater than the theoretical time is found.
.br
This behavior can be changed to find the best SAP packet around a segment theoretical boundary using .I sbound:
.br
* closest mode: the segment will start at the closest SAP of the theoretical boundary
.br
* in mode: the segment will start at or before the theoretical boundary
.br
Warning: These modes will introduce delay in the segmenter (typically buffering of one GOP) and should not be used for low-latency modes.
.br
The segmenter can also be configured to:
.br
- completely ignore SAP when segmenting using .I sap.
.br
- ignore SAP on non-video streams when segmenting using .I strict_sap.
.br

.br
.P
.B
Cue-driven segmentation
.br
The segmenter can take a list of instructions, or Cues, to use for the segmentation process, in which case only these are used to derive segment boundaries.
.br
Cue files can be specified for the entire segmenter, or per PID using DashCue property.
.br
Cues are given in an XML file with a root element called <DASHCues>, with currently no attribute specified. The children are one or more <Stream> elements, with attributes:
.br
* id: integer for stream/track/pid ID
.br
* timescale: integer giving the units of following timestamps
.br
* mode: if present and value is edit, the timestamp are in presentation time (edit list applied) otherwise they are in media time
.br

.br
The children of <Stream> are one or more <Cue> elements, with attributes:
.br
* sample: integer giving the sample/frame number of a sample at which spliting shall happen
.br
* dts: long integer giving the decoding time stamp of a sample at which spliting shall happen
.br
* cts: long integer giving the composition / presentation time stamp of a sample at which spliting shall happen
.br
Warning: Cues shall be listed in decoding order.
.br

.br
.P
.B
Manifest Generation only mode
.br
The segmenter can be used to generate manifests from already fragmented ISOBMFF inputs using .I sigfrag.
.br
In this case, segment boundaries are attached to each packet starting a segment and used to drive the segmentation.
.br
This can be used with single-track ISOBMFF sources, either single file or multi file.
.br
For single file source:
.br
- if onDemand .I profile is requested, sources have to be formatted as a DASH self-initializing media segment with the proper sidx.
.br
- templates are disabled.
.br
- .I sseg is forced for all profiles except onDemand ones.
.br
For multi files source:
.br
- input shall be a playlist containing the initial file followed by the ordered list of segments.
.br
- if no .I template is provided, the full or main .I profile will be used
.br
* if [-template]() is provided, it shall be correct: the filter will not try to guess one from the input file names and will not validate it either.
.br

.br
The manifest generation-only mode supports both MPD and HLS generation.
.br

.br
Example
.br
-i ondemand_src.mp4 -o dash.mpd:sigfrag:profile=onDemand
.br

.br
This will generate a DASH manifest for onDemand Profile based on the input file.
.br
Example
.br
-i ondemand_src.mp4 -o dash.m3u8:sigfrag
.br

.br
This will generate a HLS manifest based on the input file.
.br
Example
.br
-i seglist.txt -o dash.mpd:sigfrag
.br

.br
This will generate a DASH manifest in Main Profile based on the input files.
.br
Example
.br
-i seglist.txt:Template=$XInit=init$$q1/$Number$ -o dash.mpd:sigfrag:profile=live
.br

.br
This will generate a DASH manifest in live Profile based on the input files. The input file will contain init.mp4, q1/1.m4s, q1/2.m4s...
.br

.br
.P
.B
Muxer development considerations
.br
Output muxers allowing segmented output must obey the following:
.br
- inspect packet properties
.br
 * FileNumber: if set, indicate the start of a new DASH segment
.br
 * FileName: if set, indicate the file name. If not present, output shall be a single file. This is only set for packet carrying the FileNumber property, and only on one PID (usually the first) for multiplexed outputs
.br
 * IDXName: gives the optional index name (if not present, index shall be in the same file as dash segment). Only used for MPEG-2 TS for now
.br
 * EODS: property is set on packets with no payload and no timestamp to signal the end of a DASH segment. This is only used when stoping/resuming the segmentation process, in order to flush segments without dispatching an EOS (see .I subdur )
.br
- for each segment done, send a downstream event on the first connected PID signaling the size of the segment and the size of its index if any
.br
- for muxers with init data, send a downstream event signaling the size of the init and the size of the global index if any
.br
- the following filter options are passed to muxers, which should declare them as arguments:
.br
 * noinit: disables output of init segment for the muxer (used to handle bitstream switching with single init in DASH)
.br
 * frag: indicates muxer shall use fragmented format (used for ISOBMFF mostly)
.br
 * subs_sidx=0: indicates an SIDX shall be generated - only added if not already specified by user
.br
 * xps_inband=all|no: indicates AVC/HEVC/... parameter sets shall be sent inband or out of band
.br
 * nofragdef: indicates fragment defaults should be set in each segment rather than in init segment
.br

.br
The segmenter will add the following properties to the output PIDs:
.br
* DashMode: identifies VoD (single file with global index) or regular DASH mode used by segmenter
.br
* DashDur: identifies target DASH segment duration - this can be used to estimate the SIDX size for example
.br

.br

.br
.SH Options (expert):
.LP
.br
segdur (dbl, default: 0.0):    target segment duration in seconds. A value less than or equal to 0 means to 1.0 second
.br
tpl (bool, default: true):     use template mode (multiple segment, template URLs)
.br
stl (bool, default: false):    use segment timeline (ignored in on_demand mode)
.br
dmode (enum, default: static, updatable): dash content mode
.br
* static: static content
.br
* dynamic: live generation
.br
* dynlast: last call for live, will turn the MPD into static
.br

.br
sseg (bool, default: false):   single segment is used
.br
sfile (bool, default: false):  use a single file for all segments (default in on_demand)
.br
align (bool, default: true):   enable segment time alignment between representations
.br
sap (bool, default: true):     enable spliting segments at SAP boundaries
.br
mix_codecs (bool, default: false): enable mixing different codecs in an adaptation set
.br
ntp (enum, default: rem):      insert/override NTP clock at the begining of each segment
.br
* rem: removes NTP from all input packets
.br
* yes: inserts NTP at each segment start
.br
* keep: leaves input packet NTP untouched
.br

.br
no_sar (bool, default: false): do not check for identical sample aspect ratio for adaptation sets
.br
m2ts (bool, default: false):   generate MPEG-2 TS output
.br
bs_switch (enum, default: def): bitstream switching mode (single init segment)
.br
* def: resolves to off for onDemand and inband for live
.br
* off: disables BS switching
.br
* on: enables it if same decoder configuration is possible
.br
* inband: moves decoder config inband if possible
.br
* force: enables it even if only one representation
.br
* multi: uses multiple stsd entries in ISOBMFF
.br

.br
template (str):                template string to use to generate segment name - see filter help
.br
segext (str):                  file extension to use for segments
.br
initext (str):                 file extension to use for the init segment
.br
muxtype (enum, default: auto): muxtype to use for the segments
.br
* mp4: uses ISOBMFF format
.br
* ts: uses MPEG-2 TS format
.br
* mkv: uses Matroska format
.br
* webm: uses WebM format
.br
* raw: uses raw media format (disables muxed representations)
.br
* auto: guess format based on extension, default to mp4 if no extension
.br

.br
asto (dbl, default: 0):        availabilityStartTimeOffset to use in seconds. A negative value simply increases the AST, a positive value sets the ASToffset to representations
.br
profile (enum, default: auto): target DASH profile. This will set default option values to ensure conformance to the desired profile. For MPEG-2 TS, only main and live are used, others default to main
.br
* auto: turns profile to live for dynamic and full for non-dynamic
.br
* live: DASH live profile, using segment template
.br
* onDemand: MPEG-DASH live profile
.br
* main: MPEG-DASH main profile, using segment list
.br
* full: MPEG-DASH full profile
.br
* hbbtv1.5.live: HBBTV 1.5 DASH profile
.br
* dashavc264.live: DASH-IF live profile
.br
* dashavc264.onDemand: DASH-IF onDemand profile
.br

.br
profX (str):                   list of profile extensions, as used by DASH-IF and DVB. The string will be colon-concatenated with the profile used
.br
cp (enum, default: set):       content protection element location
.br
* set: in adaptation set element
.br
* rep: in representation element
.br
* both: in both adaptation set and representation elements
.br

.br
pssh (enum, default: v):       storage mode for PSSH box
.br
* f: stores in movie fragment only
.br
* v: stores in movie only
.br
* m: stores in mpd only
.br
* mf: stores in mpd and movie fragment
.br
* mv: stores in mpd and movie
.br
* n: discard pssh from mpd and segments
.br

.br
buf (sint, default: -100):     min buffer duration in ms. negative value means percent of segment duration (eg -150 = 1.5*seg_dur)
.br
timescale (sint, default: 0):  set timescale for timeline and segment list/template. A value of 0 picks up the first timescale of the first stream in an adaptation set. A negative value forces using stream timescales for each timed element (multiplication of segment list/template/timelines). A positive value enforces the MPD timescale
.br
check_dur (bool, default: true): check duration of sources in period, trying to have roughly equal duration. Enforced whenever period start times are used
.br
skip_seg (bool, default: false): increment segment number whenever an empty segment would be produced - NOT DASH COMPLIANT
.br
title (str):                   MPD title
.br
source (str):                  MPD Source
.br
info (str):                    MPD info url
.br
cprt (str):                    MPD copyright string
.br
lang (str):                    language of MPD Info
.br
location (strl):               set MPD locations to given URL
.br
base (strl):                   set base URLs of MPD
.br
refresh (dbl, default: 0):     refresh rate for dynamic manifests, in seconds. A negative value sets the MPD duration. If 0, uses dash duration
.br
tsb (dbl, default: 30):        time-shift buffer depth in seconds. A negative value means infinity
.br
subdur (dbl, default: 0):      maximum duration of the input file to be segmented. This does not change the segment duration, segmentation stops once segments produced exceeded the duration
.br
ast (str):                     set start date (as xs:date, eg YYYY-MM-DDTHH:MM:SSZ) for live mode. Default is now. !! Do not use with multiple periods, nor when DASH duration is not a multiple of GOP size !!
.br
state (str):                   path to file used to store/reload state info when simulating live. This is stored as a valid MPD with GPAC XML extensions
.br
loop (bool, default: false):   loop sources when dashing with subdur and state. If not set, a new period is created once the sources are over
.br
split (bool, default: true):   enable cloning samples for text/metadata/scene description streams, marking further clones as redundant
.br
hlsc (bool, default: false):   insert clock reference in variant playlist in live HLS
.br
cues (str):                    set cue file - see filter help
.br
strict_cues (bool, default: false): strict mode for cues, complains if spliting is not on SAP type 1/2/3 or if unused cue is found
.br
strict_sap (enum, default: off): strict mode for sap
.br
* off: ignore SAP types for PID other than video, enforcing _startsWithSAP=1_
.br
* sig: same as .I off but keep _startsWithSAP_ to the true SAP value
.br
* on: warn if any PID uses SAP 3 or 4 and switch to FULL profile
.br

.br
subs_sidx (sint, default: -1): number of subsegments per sidx. negative value disables sidx. Only used to inherit sidx option of destination
.br
cmpd (bool, default: false):   skip line feed and spaces in MPD XML for more compacity
.br
styp (str):                    indicate the 4CC to use for styp boxes when using ISOBMFF output
.br
dual (bool):                   indicate to produce both MPD and M3U files
.br
sigfrag (bool):                use manifest generation only mode - see filter help
.br
sbound (enum, default: out):   indicate how the theoretical segment start TSS (= segment_number * duration) should be handled
.br
* out: segment split as soon as TSS is exceeded (TSS <= segment_start)
.br
* closest: segment split at closest SAP to theoretical bound
.br
* in: TSS is always in segment (TSS >= segment_start)
.br

.br
reschedule (bool, default: false): reschedule sources with no period ID assigned once done (dynamic mode only)
.br
sreg (bool, default: false):   regulate the session
.br
- when using subdur and context, only generate segments from the past up to live edge
.br
- otherwise in dynamic mode without context, do not generate segments ahead of time
.br
scope_deps (bool, default: true): scope PID dependencies to be within source. If disabled, PID dependencies will be checked across all input PIDs regardless of their sources
.br
utcs (str):                    URL to use as time server / UTCTiming source. Special value inband enables inband UTC (same as publishTime), special prefix xsd@ uses xsDateTime schemeURI rather than ISO
.br
force_flush (bool, default: false): force generating a single segment for each input. This can be usefull in batch mode when average source duration is known and used as segment duration but actual duration may sometimes be greater
.br

.br
.SH tileagg
.LP
.br
Description: HEVC tile aggregator
.br

.br
This filter reaggregates a set of split tiled HEVC streams (hvt1 or hvt2 in isobmff) into a single HEVC stream.
.br

.br
.SH Options (expert):
.LP
.br
tiledrop (uintl, default: , updatable): specify indexes of tiles to drop
.br

.br
.SH pin
.LP
.br
Description: pipe input
.br

.br
This filter handles generic input pipes (mono-directional) in blocking or non blocking mode.
.br
Warning: Input pipes cannot seek.
.br
Data format of the pipe may be specified using extension (either in file name or through .I ext) or MIME type through .I mime.
.br
Note: Unless disabled at session level (see .I -no-probe ), file extensions are usually ignored and format probing is done on the first data block.
.br

.br
.SH stdin pipe
.LP
.br
The filter can handle reading from stdin, by using -or stdin as input file name.
.br
Example
.br
gpac -i - vout
.br

.br
Example
.br
gpac -i stdin vout
.br

.br

.br
.SH Named pipes
.LP
.br
The filter can handle reading from named pipes. The associated protocol scheme is pipe:// when loaded as a generic input (eg, -i pipe://URL where URL is a relative or absolute pipe name).
.br
On Windows hosts, the default pipe prefix is \\.\pipe\gpac\ if no prefix is set.
.br
Example
.br
dst=mypipe resolves in \\.\pipe\gpac\mypipe
.br

.br
Example
.br
dst=\\.\pipe\myapp\mypipe resolves in \\.\pipe\myapp\mypipe
.br

.br
Any destination name starting with \\ is used as is, with \ translated in /.
.br

.br
Input pipes are created by default in non-blocking mode.
.br

.br
The filter can create the pipe if not found using .I mkp. On windows hosts, this will create a pipe server.
.br
On non windows hosts, the created pipe will delete the pipe file upon filter destruction.
.br

.br
Input pipes can be setup to run forever using .I ka. In this case, any potential pipe close on the writing side and end of stream will only be triggered upon session close.
.br
This can be useful to pipe raw streams from different process into gpac:
.br
Receiver side: gpac -i pipe://mypipe:ext=.264:mkp:ka
.br
Sender side: cat raw1.264 > mypipe && gpac -i raw2.264 -o pipe://mypipe:ext=.264
.br
The pipe input can be created in blocking mode or non-blocking mode. If the filter creates the pipe, blocking mode is always enabled.
.br

.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
block_size (uint, default: 5000): buffer size used to read pipe
.br
ext (str):                     indicate file extension of pipe data
.br
mime (str):                    indicate mime type of pipe data
.br
blk (bool, default: false):    open pipe in block mode - see filter help
.br
ka (bool, default: false):     keep-alive pipe when end of input is detected - see filter help
.br
mkp (bool, default: false):    create pipe if not found - see filter help
.br

.br
.SH pout
.LP
.br
Description: pipe output
.br

.br
This filter handles generic output pipes (mono-directional) in blocking mode only.
.br
Warning: Output pipes do not currently support non blocking mode.
.br
The assoicated protocol scheme is pipe:// when loaded as a generic output (eg, -o pipe://URL where URL is a relative or absolute pipe name).
.br
Data format of the pipe shall be specified using extension (either in filename or through .I ext option) or MIME type through .I mime
.br
The pipe name indicated in .I dst can use template mechanisms from gpac, e.g. dst=pipe_$ServiceID$
.br

.br
On Windows hosts, the default pipe prefix is \\.\pipe\gpac\ if no prefix is set 
.br
Example
.br
dst=mypipe resolves in \\.\pipe\gpac\mypipe
.br

.br
Example
.br
dst=\\.\pipe\myapp\mypipe resolves in \\.\pipe\myapp\mypipe
.br

.br
Any destination name starting with \\ is used as is, with \ translated in /
.br

.br
The pipe input can create the pipe if not found using .I mkp. On windows hosts, this will create a pipe server.
.br
On non windows hosts, the created pipe will delete the pipe file upon filter destruction.
.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file
.br
ext (str):                     indicate file extension of pipe data
.br
mime (str):                    indicate mime type of pipe data
.br
dynext (bool, default: false): indicate the file extension is set by filter chain, not dst
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
speed (dbl, default: 1.0):     set playback speed. If speed is negative and start is 0, start is set to -1
.br
mkp (bool, default: false):    create pipe if not found - see filter help
.br
block_size (uint, default: 5000): buffer size used to write to pipe, windows only
.br

.br
.SH gsfmx
.LP
.br
Description: GSF Muxer
.br

.br
This filter provides GSF (GPAC Super/Simple/Serialized/Stream/State Format) multiplexing.
.br
It serializes the stream states (config/reconfig/info update/remove/eos) and packets of input PIDs. This allows either saving to file a session, or forwarding the state/data of streams to another instance of GPAC using either pipes or sockets. Upstream events are not serialized.
.br

.br
The default behaviour does not insert sequence numbers. When running over general protocols not ensuring packet order, this should be inserted.
.br
The serializer sends tune-in packets (global and per pid) at the requested carousel rate - if 0, no carousel. These packets are marked as redundant so that they can be discarded by output filters if needed.
.br

.br
The stream format can be encrypted in AES 128 CBC mode. For all packets, the packet header (header, size, frame size/block offset and optional seq num) are in the clear and the followings byte until the last byte of the last multiple of block size (16) fitting in the payload are encrypted.
.br
For data packets, each fragment is encrypted individually to avoid error propagation in case of losses.
.br
For other packets, the entire packet is encrypted before fragmentation (fragments cannot be processed individually).
.br
For header/tunein packets, the first 25 bytes after the header are in the clear (signature,version,IV and pattern).
.br
The .I IV is constant to avoid packet overhead, randomly generated if not set and sent in the initial stream header. Pattern mode can be used (cf CENC cbcs) to encrypt K block and leave N blocks in the clear.
.br

.br
The header/tunein packet may get quite big when all pid properties are kept. In order to help reduce its size, the .I minp option can be used: this will remove all built-in properties marked as dropable (cf property help) as well as all non built-in properties.
.br
The .I skp option may also be used to specify which property to drop:
.br
Example
.br
skp="4CC1,Name2
.br

.br
This will remove properties of type 4CC1 and properties (built-in or not) of name Name2.
.br

.br

.br

.br
.SH Options (expert):
.LP
.br
sigsn (bool, default: false):  signal packet sequence number after header field and before size field. Sequence number is per PID, encoded on 16 bits. Header packet does not have a SN
.br
sigdur (bool, default: true):  signal duration
.br
sigbo (bool, default: false):  signal byte offset
.br
sigdts (bool, default: true):  signal decoding timestamp
.br
dbg (enum, default: no):       set debug mode
.br
* no: disable debug
.br
* nodata: force packet size to 0
.br
* nopck: skip packet
.br

.br
key (mem):                     encrypt packets using given key - see filter helps
.br
IV (mem):                      set IV for encryption - a constant IV is used to keep packet overhead small (cbcs-like)
.br
pattern (frac, default: 1/0):  set nb crypt / nb_skip block pattern. default is all encrypted
.br
mpck (uint, default: 0):       set max packet size. 0 means no fragmentation (each AU is sent in one packet)
.br
magic (str):                   magic string to append in setup packet
.br
skp (str):                     comma separated list of pid property names to skip - see filter help
.br
minp (bool, default: false):   include only the minimum set of properties required for stream processing - see filter help
.br
crate (dbl, default: 0):       carousel period for tune-in info in seconds - see filter help
.br

.br
.SH gsfdmx
.LP
.br
Description: GSF Demuxer
.br

.br
This filter provides GSF (GPAC Super/Simple/Serialized/Stream/State Format) demultiplexing.
.br
It deserializes the stream states (config/reconfig/info update/remove/eos) and packets of input PIDs.
.br
This allows either reading a session saved to file, or receiving the state/data of streams from another instance of GPAC using either pipes or sockets
.br

.br
The stream format can be encrypted in AES 128 CBC mode, in which case the demux filters must be given a 128 bit key.
.br

.br
.SH Options (expert):
.LP
.br
key (mem):                     key for decrypting packets
.br
magic (str):                   magic string to check in setup packet
.br
mq (uint, default: 4):         set max packet queue length for loss detection. 0 will flush incomplete packet when a new one starts
.br
pad (uint, default: 0, minmax: 0-255): byte value used to pad lost packets
.br

.br
.SH sockout
.LP
.br
Description: UDP/TCP output
.br

.br
This filter handles generic output sockets (mono-directional) in blocking mode only.
.br
The filter can work in server mode, waiting for source connections, or or in client mode, directly connecting.
.br
In server mode, the filter can be instructed to keep running at the end of the stream.
.br
In server mode, the default behaviour is to keep input packets when no more clients are connected; this can be adjusted though the .I kp option, however there is no realtime regulation of how fast packets are droped.
.br
If your sources are not real time, consider adding a real-time scheduler in the chain (cf reframer filter), or set the send .I rate option.
.br

.br
- UDP sockets are used for destinations URLs formatted as udp://NAME
.br
- TCP sockets are used for destinations URLs formatted as tcp://NAME
.br
- UDP unix domain sockets are used for destinations URLs formatted as udpu://NAME
.br
- TCP unix domain sockets are used for destinations URLs formatted as tcpu://NAME
.br

.br
The socket output can be configured to drop or revert packet order for test purposes.
.br
For both mode, a window size in packets is specified as the drop/revert fraction denominator, and the index of the packet to drop/revert is given as the numerator/
.br
If the numerator is 0, a packet is randomly chosen in that window.
.br
Example
.br
:pckd=4/10
.br

.br
This drops every 4th packet of each 10 packet window.
.br
Example
.br
:pckr=0/100
.br

.br
This reverts the send order of one random packet in each 100 packet window.
.br

.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file
.br
sockbuf (uint, default: 65536): block size used to read file
.br
port (uint, default: 1234):    default port if not specified
.br
ifce (cstr):                   default multicast interface
.br
ext (str):                     file extension of pipe data - see filter help
.br
mime (str):                    mime type of pipe data - see filter help
.br
listen (bool, default: false): indicate the output socket works in server mode
.br
maxc (uint, default: +I):      max number of concurrent connections
.br
ka (bool, default: false):     keep socket alive if no more connections
.br
kp (bool, default: true):      keep packets in queue if no more clients
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
speed (dbl, default: 1.0):     set playback speed. If speed is negative and start is 0, start is set to -1
.br
rate (uint, default: 0):       set send rate in bps, disabled by default (as fast as possible)
.br
pckr (frac, default: 0/0):     reverse packet every N - see filter help
.br
pckd (frac, default: 0/0):     drop packet every N - see filter help
.br

.br
.SH rfav1
.LP
.br
Description: AV1/IVF/VP9 reframer
.br

.br
This filter parses AV1 OBU, AV1 AnnexB or IVF with AV1 or VP9 files/data and outputs corresponding visual PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 0/1000):   import frame rate (0 default to FPS from bitstream or 25 Hz)
.br
index (dbl, default: -1.0):    indexing window length. If 0, bitstream is not probed for duration. A negative value skips the indexing if the source file is larger than 100M (slows down importers) unless a play with start range > 0 is issued, otherwise uses the positive value
.br
importer (bool, default: false): compatibility with old importer
.br
deps (bool, default: false):   import samples dependencies information
.br

.br
.SH ufobu
.LP
.br
Description: IVF/OBU/annexB writer
.br

.br
This filter is used to rewrite AV1 OBU bitstream into IVF, annex B or OBU sequence, reinserting the temporal delimiter OBU.
.br

.br
.SH Options (expert):
.LP
.br
rcfg (bool, default: true):    force repeating decoder config at each I-frame
.br

.br
.SH nvdec
.LP
.br
Description: NVidia decoder
.br

.br
This filter decodes MPEG-2, MPEG-4 Part 2, AVC|H264 and HEVC streams through NVideia decoder. It allows GPU frame dispatch or direct frame copy.
.br

.br
.SH Options (expert):
.LP
.br
num_surfaces (uint, default: 20): number of hardware surfaces to allocate
.br
unload (enum, default: no):    decoder unload mode
.br
* no: keep inactive decoder alive
.br
* destroy: destroy inactive decoder
.br
* reuse: detach decoder from inactive PIDs and reattach to active ones
.br

.br
vmode (enum, default: cuvid):  video decoder backend
.br
* cuvid: use dedicated video engines directly
.br
* cuda: use a CUDA-based decoder if faster than dedicated engines
.br
* dxva: go through DXVA internally if possible (requires D3D9 interop)
.br

.br
fmode (enum, default: gl):     frame output mode
.br
* copy: each frame is copied and dispatched
.br
* single: frame data is only retrieved when used, single memory space for all frames (not safe if multiple consummers)
.br
* gl: frame data is mapped to an OpenGL texture
.br

.br

.br
.SH atscin
.LP
.br
Description: ATSC input
.br

.br
This filter is a receiver for ATSC 3.0 ROUTE sessions. Source is identified using the string atsc://.
.br
The filter can work in cached mode, source mode or standalone mode.
.br
.SH Cached mode
.LP
.br
The cached mode is the default filter behaviour. It populates GPAC HTTP Cache with the recieved files, using http://gpatsc/serviceN/ as service root, N being the ATSC service ID.
.br
In cached mode, repeated files are always send.
.br
  
.br
The cached MPD is assigned the following headers:
.br
* x-dash-atsc: integer value, indicates the ATSC service ID.
.br
* x-dash-first-seg: string value, indicates the name of the first segment completely retrieved from the broadcast.
.br
* x-atsc-loop: boolean value, if yes indicates a loop in the service has been detected (usually pcap replay loop).
.br
  
.br
The cached files are assigned the following headers:
.br
* x-atsc: boolean value, if yes indicates the file comes from an ATSC session.
.br

.br
.SH Source mode
.LP
.br
In source mode, the filter outputs files on a single output pid of type file. The files are dispatched once fully received, the output pid carries a sequence of complete files. Repeated files are not sent unless requested.
.br
If needed, one pid per TSI can be used rather than a single pid. This avoids mixing files of different mime types on the same pid (e.g. mpd and isobmff).
.br
Example
.br
gpac -i atsc://cache=false -o $ServiceID$/$File$:dynext
.br

.br
This will grab the files and forward them as output PIDs, consumed by the fout filter.
.br

.br
.SH Standalone mode
.LP
.br
In standalone mode, the filter does not produce any output pid and writes received files to the .I odir directory.
.br
Example
.br
gpac -i atsc://odir=output
.br

.br
This will grab the files and write them to output directory.
.br

.br
.SH Interface setup
.LP
.br
On some systems (OSX), when using VM packet replay, you may need to force multicast routing on your local interface.
.br
You will have to do this for the base ATSC3 multicast (224.0.23.60):
.br
Example
.br
route add -net 224.0.23.60/32 -interface vboxnet0
.br

.br
and on each service multicast:
.br
Example
.br
route add -net 239.255.1.4/32 -interface vboxnet0
.br

.br

.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content - see filter help
.br
ifce (str):                    default interface to use for multicast. If NULL, the default system interface will be used
.br
gcache (bool, default: true):  indicate the files should populate GPAC HTTP cache - see filter help
.br
tunein (sint, default: -2):    service ID to bootstrap on. 0 means tune to no service, -1 tune all services -2 means tune on first service found
.br
buffer (uint, default: 0x80000): receive buffer size to use in bytes
.br
timeout (uint, default: 5000): timeout in ms after which tunein fails
.br
kc (bool, default: false):     keep corrupted file
.br
sr (bool, default: true):      skip repeated files - ignored in cache mode
.br
stsi (bool, default: false):   define one output pid per tsi/serviceID - ignored in cache mode, see filter help
.br
stats (uint, default: 1000):   log statistics at the given rate in ms (0 disables stats)
.br
tsidbg (uint, default: 0):     gather only objects with given TSI (debug)
.br
max_segs (uint, default: 0):   maximum number of segments to keep - ignored in cache mode
.br
odir (str):                    output directory for stand-alone mode - see filter help
.br
reorder (bool, default: false): ignore order flag in ROUTE/LCT packets, avoiding considering object done when TOI changes
.br
rtimeout (uint, default: 5000): default timeout in ms to wait when gathering out-of-order packets
.br

.br
.SH rtpout
.LP
.br
Description: RTP Streamer
.br

.br
The RTP streamer handles SDP/RTP output streaming.
.br
.SH SDP mode
.LP
.br
When the destination url is an SDP, the filter outputs an SDP on a file pid and streams RTP packets over UDP, starting from the indicated .I port.
.br
.SH Direct RTP mode
.LP
.br
When the destination url uses the protocol scheme rtp://IP:PORT, the filter does not output any SDP and streams a single input over RTP, using PORT indicated in the destination URL, or the first .I port configured.
.br
In this mode, it is usually needed to specify the desired format using .I ext or .I mime.
.br
Example
.br
gpac -i src -o rtp://localhost:1234/:ext=ts
.br

.br
This will indicate that the RTP streamer expects a MPEG-2 TS mux as an input.
.br
.SH RTP Packets
.LP
.br
The RTP packets produced have a maximum payload set by the .I mtu option (IP packet will be MTU + 40 bytes of IP+UDP+RTP headers).
.br
The real-time scheduling algorithm works as follows:
.br
- first initialize the clock by:
.br
 - computing the smallest timestamp for all input pids
.br
 - mapping this media time to the system clock
.br
- determine the earliest packet to send next on each input pid, adding .I delay if any
.br
- finally compare the packet mapped timestamp TS to the system clock SC. When TS - SC is less than .I tt, the RTP packets for the source packet are sent
.br

.br

.br
.SH Options (expert):
.LP
.br
ip (str):                      destination IP address (NULL is 127.0.0.1)
.br
port (uint, default: 7000):    port for first stream in session
.br
loop (bool, default: true):    loop all streams in session (not always possible depending on source type)
.br
mpeg4 (bool, default: false):  send all streams using MPEG-4 generic payload format if posible
.br
mtu (uint, default: 1460):     size of RTP MTU in bytes
.br
ttl (uint, default: 2):        time-to-live for muticast packets
.br
ifce (str):                    default network inteface to use
.br
payt (uint, default: 96, minmax: 96-127): payload type to use for dynamic configs
.br
delay (sint, default: 0):      send delay for packet (negative means send earlier)
.br
tt (uint, default: 1000):      time tolerance in microseconds. Whenever schedule time minus realtime is below this value, the packet is sent right away
.br
runfor (sint, default: -1):    run for the given time in ms. Negative value means run for ever (if loop) or source duration, 0 only outputs the sdp
.br
tso (sint, default: -1):       set timestamp offset in microsecs. Negative value means random initial timestamp
.br
xps (bool, default: false):    force parameter set injection at each SAP. If not set, only inject if different from SDP ones
.br
latm (bool, default: false):   use latm for AAC payload format
.br
dst (cstr):                    URL for direct RTP mode - see filter help
.br
ext (str):                     file extension for direct RTP mode - see filter help
.br
mime (cstr):                   set mime type for direct RTP mode - see filter help
.br

.br
.SH rtspout
.LP
.br
Description: RTSP Server
.br

.br
The RTSP server partially implements RTSP 1.0, with support for OPTIONS, DESCRIBE, SETUP, PLAY, PAUSE and TEARDOWN.
.br
Multiple PLAY ranges are not supported, PLAY range end is not supported, PAUSE range is not supported.
.br
Only aggregated control is supported for PLAY and PAUSE, PAUSE/PLAY on single stream is not supported.
.br
The server only runs on TCP, and handles request in sequence (will not probe for commands until previous response was sent).
.br
The server supports both RTP over UDP delivery and RTP interleaved over RTSP delivery.
.br

.br
The filter can work as a simple output filter by specifying the .I dst option:
.br
Example
.br
gpac -i source -o rtsp://myip/sessionname
.br

.br
Example
.br
gpac -i source dst=rtsp://myip/sessionname
.br

.br
In this mode, only one session is possible. It is possible to .I loop the input source(s).
.br

.br
The filter can work as a regular RTSP server by specifying the .I mounts option to indicate paths of media file to be served:
.br
Example
.br
gpac rtspout:mounts=mydir1,mydir2
.br

.br
In server mode, it is possible to load any source supported by gpac by setting the option .I dynurl.
.br
The expected syntax of the dynamic RTSP URLs is rtsp://servername/?URL1[&URLN] or rtsp://servername/@URL1[@URLN] 
.br
Each URL can be absolute or local, in which case it is resolved against the mount point(s).
.br
Example
.br
gpac -i rtsp://localhost/?pipe://mynamepipe&myfile.mp4 [dst filters]
.br

.br
The server will resolve this URL in a new session containing streams from myfile.mp4 and streams from pipe mynamepipe.
.br
When setting .I runfor in server mode, the server will exit at the end of the last session being closed.
.br

.br
In both modes, clients can setup multicast if the .I mcast option is on or mirror.
.br
When .I mcast is set to mirror mode, any DESCRIBE command on a resource already delivered through a multicast session will use that multicast.
.br
Consequently, only DESCRIBE methods are processed for such sessions, other methods will return Unauthorized.
.br

.br
The scheduling algorithm and RTP options are the same as the RTP output filter, see gpac -h rtpout
.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file - see filter help 
.br
port (uint, default: 554):     server port
.br
firstport (uint, default: 6000): port for first stream in session
.br
mtu (uint, default: 1460):     size of RTP MTU in bytes
.br
ttl (uint, default: 0):        time-to-live for muticast packets. A value of 0 uses client requested TTL, or 1
.br
ifce (str):                    default network inteface to use
.br
payt (uint, default: 96, minmax: 96-127): payload type to use for dynamic configs
.br
mpeg4 (bool, default: false):  send all streams using MPEG-4 generic payload format if posible
.br
delay (sint, default: 0):      send delay for packet (negative means send earlier)
.br
tt (uint, default: 1000):      time tolerance in microseconds. Whenever schedule time minus realtime is below this value, the packet is sent right away
.br
runfor (sint, default: -1):    run the session for the given time in ms. Negative value means run for ever (if loop) or source duration, 0 only outputs the sdp
.br
tso (sint, default: -1):       set timestamp offset in microsecs. Negative value means random initial timestamp
.br
xps (bool, default: false):    force parameter set injection at each SAP. If not set, only inject if different from SDP ones
.br
latm (bool, default: false):   use latm for AAC payload format
.br
mounts (strl):                 list of directories to expose in server mode
.br
block_size (uint, default: 10000): block size used to read TCP socket
.br
maxc (uint, default: 100):     maximum number of connections
.br
user_agent (str, default: $GUA): user agent string, by default solved from GPAC preferences
.br
close (bool, default: true):   close RTSP connection after each request, except when RTP over RTSP is used
.br
loop (bool, default: true):    loop all streams in session (not always possible depending on source type) - see filter help
.br
dynurl (bool, default: false): allow dynamic service assembly - see filter help
.br
mcast (enum, default: off):    control multicast setup of a session
.br
* off: clients are never allowed to create a multicast
.br
* on: clients can create multicast sessions
.br
* mirror: clients can create a multicast session. Any later request to the same URL will use that multicast session
.br

.br

.br
.SH httpout
.LP
.br
Description: HTTP Server
.br

.br
The HTTP output filter can act as:
.br
- a simple HTTP server
.br
- an HTTP server sink
.br
- an HTTP server file sink
.br
- an HTTP client sink
.br
- an HTTP server source
.br
  
.br
The server currently handles GET, HEAD, PUT, POST, DELETE methods.
.br
Single or multiple byte ranges are supported for both GET and PUT/POST methods, in all server modes.
.br
- for GET, the resulting body is a single-part body formed by the concatenated byte ranges as requested (no overlap checking).
.br
- for PUT/POST, the received data is pushed to the target file according to the byte ranges specified in the client request.
.br
  
.br
Warning: the partial PUT request is RFC2616 compliant but not compliant with RFC7230. PATCH method is not yet implemented in GPAC.
.br
  
.br
When a single read directory is specified, the server root / is the content of this directory.
.br
When multiple read directories are specified, the server root / contains the list of the mount points with their directory names.
.br
When a write directory is specified, the upload resource name identifies a file in this directory (the write directory name is not present in the URL).
.br
  
.br
Listing can be enabled on server using .I dlist.
.br
When disabled, a GET on a directory will fail.
.br
When enabled, a GET on a directory will return a simple HTML listing of the content inspired from Apache.
.br
  
.br
.SH Simple HTTP server
.LP
.br
In this mode, the filter doesn't need any input connection and exposes all files in the directories given by .I rdirs.
.br
PUT and POST methods are only supported if a write directory is specified by .I wdir option.
.br
Example
.br
gpac httpout:rdirs=outcoming
.br

.br
This sets up a read-only server.
.br
  
.br
Example
.br
gpac httpout:wdir=incoming
.br

.br
This sets up a write-only server.
.br
  
.br
Example
.br
gpac httpout:rdirs=outcoming:wdir=incoming:port=8080
.br

.br
This sets up a read-write server running on .I port 8080.
.br
  
.br
.SH HTTP server sink
.LP
.br
In this mode, the filter will forward input PIDs to connected clients, trashing the data if no client is connected unless .I hold is specified.
.br
The filter doesn't use any read directory in this mode.
.br
This mode is mostly usefull to setup live HTTP streaming of media sessions such as MP3, MPEG-2 TS or other muxed representations:
.br
Example
.br
gpac -i MP3_SOURCE -o http://localhost/live.mp3 --hold
.br

.br
In this example, the server waits for client requests on /live.mp3 and will then push each input packet to all connected clients.
.br
If the source is not real-time, you can inject a reframer filter performing realtime regulation.
.br
Example
.br
gpac -i MP3_SOURCE reframer:rt=on @ -o http://localhost/live.mp3
.br

.br
In this example, the server will push each input packet to all connected clients, or trash the packet if no connected clients.
.br
  
.br
In this mode, ICECast meta-data can be inserted using .I ice. The default inserted values are ice-audio-info, icy-br, icy-pub (set to 1) and icy-name if input ServiceName property is set.
.br
The server will also look for any property called ice-* on the input pid and inject them.
.br
Example
.br
gpac -i source.mp3:#ice-Genre=CoolRock -o http://IP/live.mp3 --ice
.br

.br
This will inject the header ice-Genre: CoolRock in the response.  
.br
.SH HTTP server file sink
.LP
.br
In this mode, the filter will write input PIDs to files in the first read directory specified, acting as a file output sink.
.br
The filter uses a read directory in this mode, which must be writable.
.br
Upon client GET request, the server will check if the requested URL matches the name of a file currently being written by the server.
.br
- If so, the server will:
.br
  - send the content using HTTP chunk transfer mode, starting with what is already written on disk
.br
  - push remaining data to the client as soon as recieved while writing it to disk, until source file is done
.br
- If not so, the server will simply send the file from the disk as a regular HHTP session, without chunk transfer.
.br
This mode is typically used for origin server in HAS sessions where clients may request files while they are being produced (low latency DASH).
.br
Example
.br
gpac -i SOURCE reframer:rt=on @ -o http://localhost:8080/live.mpd --rdirs=temp --dmode=dynamic --cdur=0.1
.br

.br
In this example, a real-time dynamic DASH session with chunks of 100ms is created, outputing files in temp. A client connecting to the live edge will receive segments as they are produced using HTTP chunk transfer.
.br
  
.br
.SH HTTP client sink
.LP
.br
In this mode, the filter will upload input PIDs data to remote server using PUT (or POST if .I post is set).
.br
This mode must be explicitly activated using .I hmode.
.br
The filter uses no read or write directories in this mode.
.br
Example
.br
gpac -i SOURCE -o http://targethost:8080/live.mpd:gpac:hmode=push
.br

.br
In this example, the filter will send PUT methods to the server running on .I port 8080 at targethost location (IP address or name).
.br
  
.br
.SH HTTP server source
.LP
.br
In this mode, the server acts as a source rather than a sink. It declares incoming PUT or POST methods as output PIDs
.br
This mode must be explicitly activated using .I hmode.
.br
The filter uses no read or write directories in this mode, and uploaded data is NOT stored by the server.
.br
Example
.br
gpac httpout:hmode=source vout aout
.br

.br
In this example, the filter will try to play uploaded files through video and audio output.
.br
  
.br
.SH HTTPS server
.LP
.br
The server can run over TLS (https) for all the server modes. TLS is enabled by specifying .I cert and .I pkey options.
.br
Both certificate and key must be in PEM format.
.br
The server currently only operates in either HTTPS or HTTP mode and cannot run both modes at the same time. You will need to use two httpout filters for this, one operating in HTTPS and one operating in HTTP.
.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of destination file - see filter help 
.br
port (uint, default: 80):      server port
.br
ifce (str):                    default network inteface to use
.br
rdirs (strl):                  list of directories to expose for read - see filter help
.br
wdir (str):                    directory to expose for write - see filter help
.br
cert (str):                    certificate file in PEM format to use for TLS mode
.br
pkey (str):                    private key file in PEM format to use for TLS mode
.br
block_size (uint, default: 10000): block size used to read and write TCP socket
.br
user_agent (str, default: $GUA): user agent string, by default solved from GPAC preferences
.br
close (bool, default: false):  close HTTP connection after each request
.br
maxc (uint, default: 100):     maximum number of connections, 0 is unlimited
.br
maxp (uint, default: 6):       maximum number of connections for one peer, 0 is unlimited
.br
cache_control (str):           specify the Cache-Control string to add; none disable ETag
.br
hold (bool, default: false):   hold packets until one client connects
.br
hmode (enum, default: default): filter operation mode, ignored if .I wdir is set. See filter help for more details. Mode can be
.br
* default: run in server mode (see filter help)
.br
* push: run in client mode using PUT or POST (see filter help)
.br
* source: use server as source filter on incoming PUT/POST
.br

.br
timeout (uint, default: 30):   timeout in seconds for persistent connections; 0 disable timeout
.br
ext (cstr):                    set extension for graph resolution, regardless of file extension
.br
mime (cstr):                   set mime type for graph resolution
.br
quit (bool, default: false):   exit server once all input PIDs are done and client disconnects (for test purposes)
.br
post (bool, default: false):   use POST instead of PUT for uploading files
.br
dlist (bool, default: false):  enable HTML listing for GET requests on directories
.br
sutc (bool, default: false):   insert server UTC in response headers as Server-UTC: VAL_IN_MS
.br
cors (bool, default: false):   insert CORS header allowing all domains
.br
reqlog (str):                  provide short log of the requests indicated in this option (comma separated list, * for all) regardless of HTTP log settings
.br
ice (bool, default: false):    insert ICE meta-data in response headers in sink mode - see filter help
.br

.br
.SH hevcsplit
.LP
.br
Description: HEVC tile spliter
.br

.br
This filter splits a motion-constrained tiled HEVC PID into N independent HEVC PIDs.
.br
Use hevcmerge filter to merge initially motion-constrained tiled HEVC PID in a single output.
.br

.br
.SH Options (expert):
.LP
.br

.br
.SH hevcmerge
.LP
.br
Description: HEVC Tile merger
.br

.br
This filter merges a set of HEVC PIDs into a single motion-constrained tiled HEVC PID.
.br
The filter creates a tiling grid with a single row and as many columns as needed.
.br
If .I mrows is set and tiles properly align on the final grid, multiple rows will be declared in the PPS.
.br
Positioning of tiles can be automatic (implicit) or explicit.
.br
The filter will check the SPS and PPS configurations of input PID and warn if they are not aligned but will still process them unless .I strict is set.
.br
The filter assumes that all input PIDs are synchronized (frames share the same timestamp) and will reassemble frames with the same dts. If pids are of unequal duration, the filter will drop frames as soon as one pid is over.
.br
.P
.B
Implicit Positioning
.br
In implicit positioning, results may vary based on the order of input pids declaration.
.br
In this mode the filter will automatically allocate new columns for tiles with height not a multiple of max CU height.
.br
.P
.B
Explicit Positioning
.br
In explicit positioning, the CropOrigin property on input PIDs is used to setup the tile grid. In this case, tiles shall not overlap in the final output.
.br
If CropOrigin is used, it shall be set on all input sources.
.br
If positive coordinates are used, they specify absolute positioning in pixels of the tiles. The coordinates are automatically adjusted to the next multiple of max CU width and height.
.br
If negative coordinates are used, they specify relative positioning (eg 0x-1 indicates to place the tile below the tile 0x0).
.br
In this mode, it is the caller responsibility to set coordinates so that all tiles in a column have the same width and only the last row/column uses non-multiple of max CU width/height values. The filter will complain and abort if this is not respected.
.br
- If an horizontal blank is detected in the layout, an empty column in the tiling grid will be inserted.
.br
- If a vertical blank is detected in the layout, it is ignored.
.br
  
.br
.P
.B
Spatial Relationship Description (SRD)
.br

.br
The filter will create an SRDMap property in the output PID if SRDRef and SRDor CropOrigin are set on all input PIDs.
.br
The SRDMap allows forwarding the logical sources SRD in the merged PID.
.br
The output pid SRDRef is set to the output video size.
.br
The input SRDRef and SRD are usually specified in DASH MPD, but can be manually assigned to inputs.
.br
- SRDRef gives the size of the referential used for the input SRD (usually matches the original video size, but not always)
.br
- SRD gives the size and position of the input in the original video, expressed in SRDRef referential of the input.
.br
The inputs do not need to have matching SRDRef.EX src1:SRD=0x0x640x480:SRDRef=1280x720
.br
This indicates that src1 contains a video located at 0,0, with a size of 640x480 pixels in a virtual source of 1280x720 pixels.
.br
Example
.br
src2:SRD=640x0x640x480:SRDRef=1280x720
.br

.br
This indicates that src1 contains a video located at 640,0, with a size of 640x480 pixels in a virtual source of 1280x720 pixels.
.br
 
.br
Each merged input is described by 8 intergers in the output SRDMap:
.br
- the source SRD is rescaled in the output SRDRef to form the first part (4 integers) of the SRDMap (i.e. where was the input ?)
.br
- the source location in the reconstructed video forms the second part (4 integers) of the SRDMap (i.e. where are the input pixels in the output ?)
.br
Assuming the two sources are encoded at 320x240 and merged as src2 above src1, the output will be a 320x480 video with a SRDMap of {0,160,160,240,0,0,320,240,0,0,160,240,0,240,320,240}
.br
Note: merged inputs are always listed in SRDMap in their tile order in the output bitstream.
.br

.br
Alternatively to using SRD and SRDRef, it is possible to specify CropOrigin property on the inputs, in which case:
.br
- the CropOrigin gives the location in the source
.br
- the input size gives the size in the source, and no rescaling of referential is done
.br
Example
.br
src1:CropOrigin=0x0  src1:CropOrigin=640x0 
.br

.br
Assuming the two sources are encoded at 320x240 and merged as src1 above src2, the output will be a 320x480 video with a SRDMap of {0,0,320,240,0,0,320,240,640,0,320,240,0,240,320,240}
.br

.br

.br
.SH Options (expert):
.LP
.br
strict (bool, default: false): strict comparison of SPS and PPS of input pids - see filter help
.br
mrows (bool, default: false):  signal multiple rows in tile grid when possible
.br

.br
.SH rfflac
.LP
.br
Description: FLAC reframer
.br

.br
This filter parses FLAC files/data and outputs corresponding audio PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
index (dbl, default: 1.0):     indexing window length
.br

.br
.SH rfprores
.LP
.br
Description: ProRes reframer
.br

.br
This filter parses ProRes raw files/data and outputs corresponding visual PID and frames.
.br

.br
.SH Options (expert):
.LP
.br
fps (frac, default: 0/1000):   import frame rate (0 default to FPS from bitstream or 25 Hz)
.br
findex (bool, default: true):  index frames. If true, filter will be able to work in rewind mode
.br
cid (str):                     set QT 4CC for the imported media. If not set, defaults to 'ap4h' for YUV444 or 'apch' for YUV422
.br

.br
.SH tssplit
.LP
.br
Description: MPEG Transport Stream splitter
.br

.br
This filter splits an MPEG-2 transport stream into several single program transport streams.
.br
Only the PAT table is rewritten, the CAT table, PMT and all program streams are forwarded as is.
.br
In .I full mode, global DVB tables of the input multiplex are forwarded to each output mux; otherwise these tables are discarded.
.br

.br
.SH Options (expert):
.LP
.br
dvb (bool, default: true):     forward all packets from global DVB PIDs
.br
mux_id (sint, default: -1):    set initial ID of output mux; the first program will use mux_id, the second mux_id+1, etc. If not set, this value will be set to sourceMuxId*255
.br
avonly (bool, default: true):  do not forward programs with no AV component
.br
nb_pack (uint, default: 10):   pack N packets before sending
.br

.br
.SH bsrw
.LP
.br
Description: Compressed bitstream rewriter
.br

.br
This filter rewrites some metadata of various bitstream formats.
.br
The filter can currently modify the following properties in the bitstream:
.br
* MPEG-4 Visual: aspect ratio and profile/level
.br
* AVC|H264: aspect ratio, profile, level, profile compatibility
.br
* HEVC: aspect ratio
.br
* ProRes: aspect ratio, color primaries, transfer characteristics and matrix coefficients
.br
  
.br
The filter can currently modify the following properties in the stream configuration but not in the bitstream:
.br
* HEVC: profile IDC, profile space, general compatibility flags
.br

.br

.br
.SH Options (expert):
.LP
.br
sar (frac, default: 0/0, updatable): aspect ratio to rewrite
.br
m4vpl (sint, default: -1, updatable): set ProfileLevel for MPEG-4 video part two
.br
clrp (str, updatable):         color primaries according to ISO/IEC 23001-8 / 23091-2. Value can be the integer value or (case insensitive) BT709, BT601-625, BT601-525, BT2020, P3 or P3-D65
.br
txchar (str, updatable):       transfer characteristics according to ISO/IEC 23001-8 / 23091-2. Value can be the integer value or (case insensitive) BT709, ST2084 or STDB67
.br
mxcoef (str, updatable):       matrix coeficients according to ISO/IEC 23001-8 / 23091-2. Value can be the integer value or (case insensitive) BT709, BT601 or BT2020
.br
prof (sint, default: -1, updatable): profile indication for AVC|H264
.br
lev (sint, default: -1, updatable): level indication for AVC|H264
.br
pcomp (sint, default: -1, updatable): profile compatibility for AVC|H264
.br
pidc (sint, default: -1, updatable): profile IDC for HEVC
.br
pspace (sint, default: -1, updatable): profile space for HEVC
.br
gpcflags (sint, default: -1, updatable): general compatibility flags for HEVC
.br
remsei (bool, default: false, updatable): remove SEI messages from bitstream
.br

.br
.SH ffdmx
.LP
.br
Description: FFMPEG demuxer
.br
Version: Lavf58.42.101
.br

.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
.SH Options (expert):
.LP
.br
src (cstr):                    location of source content
.br
* (str):                       any possible options defined for AVFormatContext and sub-classes. See gpac -hx ffdmx and gpac -hx ffdmx:*
.br

.br
.SH ffdec
.LP
.br
Description: FFMPEG decoder
.br
Version: Lavc58.81.100
.br

.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
.SH Options (expert):
.LP
.br
* (str):                       any possible options defined for AVCodecContext and sub-classes. See gpac -hx ffdec and gpac -hx ffdec:*
.br

.br
.SH ffavin
.LP
.br
Description: FFMPEG AV Capture
.br
Version: Lavd58.9.103
.br

.br
Typical classes are dshow on windows, avfoundation on OSX, video4linux2 or x11grab on linux
.br

.br
Typical device name can be the webcam name:
.br
FaceTime HD Camera on OSX, device name on windows, /dev/video0 on linux
.br
screen-capture-recorder, see http://screencapturer.sf.net/ on windows
.br
Capture screen 0 on OSX (0=first screen), or screenN for short
.br
X display name (eg :0.0) on linux
.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
.SH Options (expert):
.LP
.br
src (str):                     url of device, video://, audio:// or av://
.br
fmt (str):                     name of device class - see filter help. If not set, defaults to first device class
.br
dev (str, default: 0):         name of device or index of device - see filter help
.br
copy (enum, default: A):       set copy mode of raw frames
.br
* N: frames are only forwarded (shared memory, no copy)
.br
* A: audio frames are copied, video frames are forwarded
.br
* V: video frames are copied, audio frames are forwarded
.br
* AV: all frames are copied
.br

.br
sclock (bool, default: false): use system clock (us) instead of device timestamp (for buggy devices)
.br
probes (uint, default: 10, minmax: 0-100): probe a given number of video frames before emitting - this usually helps with bad timing of the first frames
.br
block_size (uint, default: 4096): block size used to read file when using avio context
.br
* (str):                       any possible options defined for AVInputFormat and AVFormatContext. See gpac -hx ffavin and gpac -hx ffavin:*
.br

.br
.SH ffsws
.LP
.br
Description: FFMPEG video rescaler
.br
Version: SwS5.6.101
.br

.br
For bicubic, to tune the shape of the basis function, .I p1 tunes f(1) and .I p2 f´(1)
.br
For gauss .I p1 tunes the exponent and thus cutoff frequency
.br
For lanczos .I p1 tunes the width of the window function
.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
.SH Options (expert):
.LP
.br
osize (v2di):                  osize of output video. When not set, input osize is used
.br
ofmt (pfmt, default: none, minmax: none,yuv420,yuv420_10,yuv422,yuv422_10,yuv444,yuv444_10,uyvy,vyuy,yuyv,yvyu,nv12,nv21,nv1l,nv2l,yuva,yuvd,yuv444a,grey,algr,gral,rgb4,rgb5,rgb6,rgba,argb,bgra,abgr,rgb,bgr,xrgb,rgbx,xbgr,bgrx,rgbd,rgbds,rgbs,rgbas): pixel format for output video. When not set, input format is used
.br
scale (enum, default: bicubic): scaling mode - see filter info
.br

.br
p1 (dbl, default: +I):         scaling algo param1 - see filter info
.br
p2 (dbl, default: +I):         scaling algo param2 - see filter info
.br

.br
.SH ffenc
.LP
.br
Description: FFMPEG encoder
.br
Version: Lavc58.81.100
.br

.br
Encodes audio and video streams.
.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br
Note: if no codec is explicited through .I ffc option and no pixel format is given, codecs will be enumerated to find a matching pixel format.
.br

.br
The encoder will force a closed gop boundary at each packet with a FileNumber property set.
.br

.br

.br
.SH Options (expert):
.LP
.br
c (str):                       codec identifier. Can be any supported GPAC ID or ffmpeg ID or filter subclass name
.br
pfmt (pfmt, default: none):    pixel format for input video. When not set, input format is used
.br
fintra (frac, default: 0):     force intra / IDR frames at the given period in sec, eg fintra=60000/1001 will force an intra every 2 seconds on 29.97 fps video; ignored for audio
.br
all_intra (bool, default: false, updatable): only produce intra frames
.br
ls (bool, default: false):     log stats
.br
ffc (str):                     ffmpeg codec name. This allows enforcing a given codec if multiple codecs support the codec ID set (eg aac vs vo_aacenc)
.br
* (str):                       any possible options defined for AVCodecContext and sub-classes. see gpac -hx ffenc and gpac -hx ffenc:*
.br

.br
.SH ffmx
.LP
.br
Description: FFMPEG muxer
.br
Version: Lavf58.42.101
.br

.br
FFMPEG output for files and streamers.
.br
See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
Note: Some URL formats may not be sufficient to derive the multiplexing format, you must then use .I ffmt to specify the desired format.
.br

.br
Unlike other multiplexing filters in GPAC, this filter is a sink filter and does not produce any PID to be redirected in the graph.
.br
The filter can however use template names for its output, using the first input PID to resolve the final name.
.br
The filter watches the property FileNumber on incoming packets to create new files.
.br

.br

.br
.SH Options (expert):
.LP
.br
dst (cstr):                    location of source content
.br
start (dbl, default: 0.0):     set playback start offset. Negative value means percent of media dur with -1 <=> dur
.br
speed (dbl, default: 1.0):     set playback speed. If speed is negative and start is 0, start is set to -1
.br
interleave (bool, default: true): write frame in interleave mode
.br
nodisc (bool, default: false): ignore stream configuration changes while muxing, may result in broken streams
.br
mime (cstr):                   set mime type for graph resolution
.br
ffiles (bool, default: false): force complete files to be created for each segment in DASH modes
.br
ffmt (str):                    force ffmpeg output format for the given URL
.br
block_size (uint, default: 4096): block size used to read file when using avio context
.br
* (str):                       any possible options defined for AVFormatContext and sub-classes. See gpac -hx ffmx and gpac -hx ffmx:*
.br

.br
.SH ffavf
.LP
.br
Description: FFMPEG AVFilter
.br
Version: Lavf58.42.101
.br

.br
This filter provides libavfilter raw audio and video tools. See FFMPEG documentation (https://ffmpeg.org/documentation.html) for more details
.br

.br
.SH Declaring a filter
.LP
.br
The filter loads a filter or a filter chain description from the .I f option.
.br
Example
.br
ffavf:f=showspectrum
.br

.br

.br
Unlike other FFMPEG bindings in GPAC, this filter does not parse other libavfilter options, you must specify them directly in the filter chain, and the .I f option will have to be escaped.
.br
Example
.br
ffavf::f=showspectrum=size=320x320 or ffavf::f=showspectrum=size=320x320::pfmt=rgb
.br

.br

.br
The filter will automatically create buffer and buffersink AV filters for data exchange between GPAC and libavfilter.
.br
The builtin options ( .I pfmt, .I afmt ...) can be used to configure the buffersink filter to set the output format of the filter.
.br

.br
.SH Naming of PIDs
.LP
.br
For simple filter graphs with only one input and one output, the input PID is assigned the avfilter name in and the output PID is assigned the avfilter name out
.br

.br
When a graph has several inputs, input PID names shall be assigned by the user using the ffid property, and mapping must be done in the filter.
.br
Example
.br
src=video:#ffid=a src=logo:#ffid=b ffavf::f=[a][b]overlay=main_w-overlay_w-10:main_h-overlay_h-10
.br

.br
In this example:
.br
- the video source is identified as a
.br
- the logo source is identified as b
.br
- the filter declaration maps a to its first input (in this case, main video) and b to its second input (in this case the overlay)
.br

.br
When a graph has several outputs, output PIDs will be identified using the ffid property set to the output avfilter name.
.br
Example
.br
src=source ffavf::f=split inspect:SID=#ffid=out0 vout#SID=out1
.br

.br
In this example:
.br
- the spliter produces 2 video streams out0 and out1
.br
- the inspecter only process stream with ffid out0
.br
- the video output only displays stream with ffid out1
.br

.br
The name(s) of the final output of the avfilter graph cannot be configured in GPAC. You can however name intermediate output(s) in a complex filter chain as usual.
.br

.br
.SH Filter graph commands
.LP
.br
The filter handles option updates as commands passed to the AV filter graph. The syntax expected in the option name is:
.br
* com_name=value: sends command com_name with value value to all filters
.br
* name#com_name=value: sends command com_name with value value to filter named name
.br

.br

.br

.br
.SH Options (expert):
.LP
.br
f (str):                       filter or filter chain description - see filter help
.br
pfmt (pfmt, default: none):    pixel format of output. If not set, let AVFilter decide
.br
afmt (afmt, default: none):    audio format of output. If not set, let AVFilter decide
.br
sr (uint, default: 0):         sample rate of output. If not set, let AVFilter decide
.br
ch (uint, default: 0):         number of channels of output. If not set, let AVFilter decide
.br
dump (bool, default: false, updatable): dump graph as log madia@info or stderr if not set
.br
* (str):                       any possible options defined for AVFilter and sub-classes. See gpac -hx ffavf and gpac -hx ffavf:*
.br

.br
.SH jsf
.LP
.br
Description: JavaScript filter
.br

.br
This filter runs a javascript file specified in .I js defining a new JavaScript filter.
.br
  
.br
For more information on how to use JS filters, please check https://wiki.gpac.io/jsfilter
.br

.br

.br
.SH Options (expert):
.LP
.br
js (cstr):                     location of script source
.br
* (str):                       any possible options defined for the script. See gpac -hx jsf:js=$YOURSCRIPT
.br

.br
.SH dtout
.LP
.br
Description: DekTec SDIOut
.br

.br
This filter provides SDI output to be used with DTA 2174 or DTA 2154 cards.
.br

.br
.SH Options (expert):
.LP
.br
bus (sint, default: -1):       PCI bus number - if not set, device discovery is used
.br
slot (sint, default: -1):      PCI bus number - if not set, device discovery is used
.br
fps (frac, default: 30/1):     default FPS to use if input stream fps cannot be detected
.br
clip (bool, default: false):   clip YUV data to valid SDI range, slower
.br
port (uint, default: 1):       set sdi output port of card
.br
start (dbl, default: 0.0):     set playback start offset, [-1, 0] means percent of media dur, eg -1 == dur
.br

.br
.SH ohevcdec
.LP
.br
Description: OpenHEVC decoder
.br

.br
This filter decodes HEVC and LHVC (HEVC scalable extensions) from one or more PIDs through the OpenHEVC library
.br

.br
.SH Options (expert):
.LP
.br
threading (enum, default: frame): set threading mode
.br
* frameslice: parallel decoding of both frames and slices
.br
* frame: parallel decoding of frames
.br
* slice: parallel decoding of slices
.br

.br
nb_threads (uint, default: 0): set number of threads. If 0, uses number of cores minus one
.br
no_copy (bool, default: false): directly dispatch internal decoded frame without copy
.br
pack_hfr (bool, default: false): pack 4 consecutive frames in a single output
.br
seek_reset (bool, default: false): reset decoder when seeking
.br
force_stereo (bool, default: false): force stereo output for multiview (top-bottom only)
.br
reset_switch (bool, default: false): reset decoder at config change
.br

.br
.SH EXAMPLES
.TP
Basic and advanced examples are available at https://wiki.gpac.io/Filters
.SH MORE
.LP
Authors: GPAC developers, see git repo history (-log)
.br
For bug reports, feature requests, more information and source code, visit http://github.com/gpac/gpac
.br
build: 1.0.0-rev187-gb4b94447f-master
.br
Copyright: (c) 2000-2020 Telecom Paris distributed under LGPL v2.1+ - http://gpac.io
.br
.SH SEE ALSO
.LP
gpac(1), MP4Client(1), MP4Box(1)
